n = int(input())
size = 2 * n + 1
matrix = [[0] * size for _ in range(size)]
x, y, value, direction_index, steps = n, n, 1, 0, 1
directions = [(-1, 0), (0, -1), (1, 0), (0, 1)]
while value < size * size:
for _ in range(2):
for step in range(steps):
if value >= size * size:
break
x += directions[direction_index][0]
y += directions[direction_index][1]
matrix[x][y] = value
value += 1
direction_index = (direction_index + 1) % 4
steps += 1
print('\n'.join(' '.join(map(str, r)) for r in matrix))
Формат входных данных
На вход дано натуральное число
n ( 1 ≤ n ≤ 100 ) .
Формат результата
Выведите полученный двумерный массив, числа в строке разделяйте пробелом.
Примеры
Входные данные
3
Результат работы
30 29 28 27 26 25 48
31 12 11 10 9 24 47
32 13 2 1 8 23 46
33 14 3 0 7 22 45
34 15 4 5 6 21 44
35 16 17 18 19 20 43
36 37 38 39 40 41 42
Нужно решить задачу используя тему Двумерные списки