Дано число n. Создайте массив A[2*n+1][2*n+1] и заполните его по спирали, начиная с числа 0 в центральной клетке A[n+1][n+1]. Спираль выходит вверх, далее закручивается против часовой стрелки. Входные данные Программа получает на вход одно число n. Выходные данные Программа должна вывести полученный массив, отводя на вывод каждого числа ровно 3 символа. Примеры входные данные 2 выходные данные 12 11 10 9 24 13 2 1 8 23 14 3 0 7 22 15 4 5 6 21 16 17 18 19 20
n = 2 A = [[0] (2n+1) for _ in range(2*n+1)] directions = [(0, 1), (-1, 0), (0, -1), (1, 0)] # right, up, left, down x, y = n, n num = 0 d = 0
while num <= 4 n n + 1: A[x][y] = num num += 1 dx, dy = directions[d] if 0 <= x + dx < 2n+1 and 0 <= y + dy < 2n+1 and A[x + dx][y + dy] == 0: x, y = x + dx, y + dy else: d = (d + 1) % 4
for row in A: print(" ".join([f"{num:3}" for num in row]))
n = 2
A = [[0] (2n+1) for _ in range(2*n+1)]
directions = [(0, 1), (-1, 0), (0, -1), (1, 0)] # right, up, left, down
x, y = n, n
num = 0
d = 0
while num <= 4 n n + 1:
A[x][y] = num
num += 1
dx, dy = directions[d]
if 0 <= x + dx < 2n+1 and 0 <= y + dy < 2n+1 and A[x + dx][y + dy] == 0:
x, y = x + dx, y + dy
else:
d = (d + 1) % 4
for row in A:
print(" ".join([f"{num:3}" for num in row]))