Дана матрица размера n x n, поменяйте местами элементы в двух квадратах.
Например. вам дано:
0 3 1 2
9 2 3 4
5 6 5 7
7 8 9 9
Вам необходимо вернуться:
0 3 5 6
9 2 7 8
1 2 5 7
3 4 9 9
Я понял, что у нас будет два варианта этой функции в зависимости от размера матрицы: если n четное или нечетное. Я пытался решить эту задачу в два цикла, но понимаю, что просто меняю местами элементы (это вариант четного размера):
def Swap4(m,r):
k = r//2
if r % 2 != 0:
for i in range(0, k):
for j in range(k+1, r):
t = m[j]
m[j] = m[j]
m[j] = t
else:
for i in range(0, k):
for j in range(k, r):
t = m[j]
m[j] = m[j]
m[j] = t
здесь k — размер матрицы n // 2.
Однако мне кажется, что нам нужен своего рода сдвиг в цикле i для индексов, когда мы меняем местами элементы следующим образом:
[0][2] -> [2][0]
[0][3] -> [2][1]
[1][2] -> [3][0]
[1][3] -> [3][1]
Подробнее здесь: https://stackoverflow.com/questions/785 ... x-n-matrix