ÅY
Size: a a a
ÅY
"L
ÅY
def rot(direction):
if direction == 0:
return lambda i, j: (i, j + 1), 1
if direction == 1:
return lambda i, j: (i - 1, j), 2
if direction == 2:
return lambda i, j: (i, j - 1), 3
if direction == 3:
return lambda i, j: (i + 1, j), 0
def spiral(numbers, n):
data = [[None] * n for i in range(n)]
direction_func, direction = rot(3)
i = 0
j = 0
for n in numbers:
try:
data[i][j] = n
ti, tj = direction_func(i, j)
if data[ti][tj] is not None:
raise IndexError
i = ti
j = tj
except IndexError:
direction_func, direction = rot(direction)
i, j = direction_func(i, j)
return data
res = spiral(list(range(25)), 5)
for i in res:
print(i)
ÅY
ÅY
S
ÅY
S
ÅY
ДМ
"L
ÅY
"L
ÅY
ДМ
"L
S
ДМ
ÅY