JP
Size: a a a
JP
AY
AY
AY
?

R
WC
?
R
IC
IC
AT
from itertools import chain, cycle, repeat
def make_spiral(side, elements=None):
elements = iter(range(1, side ** 2 + 1)) if elements is None else elements
matrix = [[None for _ in range(side)] for _ in range(side)]
directions = cycle(((0, 1), (1, 0), (0, -1), (-1, 0)))
steps = chain([side], *[repeat(x, 2) for x in range(side-1, 0, -1)])
pos = 0, -1
new_pos = lambda pos, d: tuple(sum(x) for x in zip(pos, d))
for step in steps:
direction = next(directions)
for _ in range(step):
pos = new_pos(pos, direction)
matrix[pos[0]][pos[1]] = next(elements)
return matrix
if __name__ == "__main__":
print('\n'.join([''.join([f'{x:4}' for x in row]) for row in make_spiral(5)]))
бт
ПЯ
бт
OS
OS
OS
OS
OS