Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Задача Спираль помогите решить

あなたの自我を放 っておいてください Ученик (31), открыт 2 недели назад
Дано натуральное число n . Создайте двумерный массив A[2n + 1][2n + 1] и заполните его по спирали, начиная с числа 0 в центральной клетке A[n + 1][n + 1]. Спираль выходит вверх, далее закручивается против часовой стрелки.

Формат входных данных
На вход дано натуральное число
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

Нужно решить задачу используя тему Двумерные списки
1 ответ
Лев Михайлов Гуру (3334) 2 недели назад
 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))
Похожие вопросы