Помогите пожалуйста разобраться с задачей

Не могу разобраться как вывести матрицу.

Задача:
Заполнить прямоугольный массив целыми числами начиная с нуля спиралью, закручивающейся по часовой стрелке из левого верхнего угла к центру массива. n = 7 m = 10

    n = int(input())
    m = int(input())
    mat = [[0]*n for i in range(m)]
    st, m = 0, 0

    mat[n//2][m//2]=n*m
    for v in range(n//2):

    for i in range(n-m):
        mat[v][i+v] = st
        st+=1
        i+=1

    for i in range(v+1, n-v):
        mat[i][-v-1] = st
        st+=1
        i+=1

    for i in range(v+1, n-v):
        mat[-v-1][-i-1] =st
        st+=1

      for i in range(v+1, n-(v+1)):
        mat[-i-1][v]=st
        st+=1
        i+=1
       v+=1
       m+=2

    for i in mat:
       print(*i)

Результат выполнения:введите сюда описание изображения


Ответы (1 шт):

Автор решения: user372410
from math import ceil

rows = int(input('Count of rows '))
cols = int(input('Count of cols '))

mat = [[0]*cols for i in range(0, rows)]

r = 0
cur = 0

while(r <= ceil(rows/2)):
    for i in range(r, rows - r):
        mat[r][i] = cur
        cur+=1

    for i in range(r + 1, rows - r - 1):
        mat[i][rows - r - 1] = cur
        cur += 1

    for i in range(r, rows - r - 1):
        mat[rows - r - 1][cols - i - 1] = cur
        cur+=1

    for i in range(r, rows - r - 1):
        mat[rows - i - 1][r] = cur
        cur+=1

    r+=1

for row in mat:    
    print(row)
→ Ссылка