Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n, s=5, 1 #исходное число
- povorot=0 #счетчик поворота
- x, y=0, 0 #стартовая позиция
- matrix=[[0] * n for pustoy in range(n)] #список nxn
- matrix[0][0]=s
- nap=1
- while s<(n*n):
- nap=1 #сброс направления счета
- if (x==0 and y==0) or (x==n-1 and y==0) or (x==n-1 and y==n-1) or (x==0 and y==n-1): povorot+=1 #ищу углы
- matrix[y][x]=s #вставляю s на полученную координату
- if povorot%2!=0:#горизонталь направо
- if y>(n/2): nap=-1#или налево
- if matrix[y][x+1*(nap)]!=0:
- povorot+=1
- continue
- x+=1*(nap)
- if povorot%2==0: #вертикаль вниз
- if x<(n/2): nap=-1 #или вверх
- if matrix[y+1*(nap)][x]!=0:
- povorot+=1
- continue
- y+=1*(nap)
- s+=1
- matrix[y][x]=s
- for rezult in range(n):
- print(*matrix[(rezult)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement