Matrix15. Дана квадратная матрица A порядка M (M — нечетное число). Начиная с элемента \(A_{1,1}\) и перемещаясь по часовой стрелке, вывести все ее элементы по спирали: первая строка, последний столбец, последняя строка в обратном порядке, первый столбец в обратном порядке, оставшиеся элементы второй строки и т. д.; последним выводится центральный элемент матрицы.

Решение на Python 3:

import random
import numpy

#M = random.randrange(2,10)
M = 5
print("M = ",M)
a = numpy.zeros((M, M))
#a.astype(int)

k = 0
for i in range(0,M):
for j in range(i,M-i):
k += 1
a[i][j] = k

for j in range(i+1,M-i):
k += 1
a[j][M-1-i] = k

for j in range(M-2-i,i-1,-1):
k += 1
a[M-1-i][j] = k

for j in range(M-2-i,i,-1):
k += 1
a[j][i] = k

i +=2

print(a)


k = 0
for i in range(0,M):
for j in range(i,M-i):
print(a[i][j], end=" ")

for j in range(i+1,M-i):
print(a[j][M-1-i], end=" ")

for j in range(M-2-i,i-1,-1):
print(a[M-1-i][j], end=" ")

for j in range(M-2-i,i,-1):
print(a[j][i], end=" ")

i +=2