Заполнение по спирали прямоугольной матрицы

На вход программе подаются два натуральных числа n и m. Напишите программу, которая создает матрицу размером n×m заполнив её «спиралью» в соответствии с образцом.

Формат входных данных
На вход программе на одной строке подаются два натуральных числа n и m — количество строк и столбцов в матрице.

Формат выходных данных
Программа должна вывести матрицу в соответствии образцом.

n, m = map(int, input().split())
matrix = [[0 for x in range(m)] for y in range(n)]
direction = [0, 1, 0, -1]
count = 1
x = y = 0
while count <= n * m:
    matrix[x][y] = str(count).ljust(3)
    count += 1
    try:
        if matrix[x + direction[0]][y + direction[1]] != 0:
            direction.append(direction.pop(0))
        x += direction[0]
        y += direction[1]
    except:
        direction.append(direction.pop(0))
        x += direction[0]
        y += direction[1]
        
for line in matrix:
    print(*line)
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: