Дано число 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

13 Янв 2020 в 19:42
420 +1
2
Ответы
1

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]))

18 Апр 2024 в 20:27
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир