Выведите таблицу размером n×n, заполненную числами от 1 до n2 (квадрат) по спирали, выходящей из левого верхнего угла и закрученной по часовой стрелке, как показано в примере (здесь n=5):
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
На второй день сдался и нашел решение в интернете, но ничего не понял, вот собственно сам код:
n = int(input())
i, j = 0, -1
max_j, max_i = n - 1, n - 1
min_j, min_i = 0, 1
count = 1
mtrx = [[0 for j in range(n)] for i in range(n)]
while True:
while j < max_j:
j += 1
mtrx[i][j] = count
count += 1
max_j -= 1
while i < max_i:
i += 1
mtrx[i][j] = count
count += 1
max_i -= 1
while j > min_j:
j -= 1
mtrx[i][j] = count
count += 1
min_j += 1
while i > min_i:
i -= 1
mtrx[i][j] = count
count += 1
min_i += 1
if j == (n - 1) // 2 and i == n // 2:
break
print()
print()
for i in range(n):
for j in range(n):
print(mtrx[i][j], end = ' ')
print()
Прошу объяснить "суть" матриц в Пайтоне