Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n=7 #исходное число
- s=1 #начинаем счет
- povorot='false' #поворот
- vertical=[]
- x=0
- y=0
- matrix=[[0] * n for pustoy in range(n)] #список nxn
- while s!=(n*n+1):
- for z in range(len(matrix[x])):#просчет горизонтальной строки
- if povorot=='false': #проверка был ли поворот
- if matrix[x][y]==0:#если поворот еще не случился идем слева направо
- matrix[x][y]=(s)
- s+=1
- y+=1
- else:
- if z==0:#здесь и далее в такой конструкции - если это не первое число проверяемом, то прокручиваю проверку вхолостую
- y+=1
- else: #если поворот уже случился идем обратно
- if matrix[x][y]==0:
- matrix[x][y]=(s)
- s+=1
- y-=1
- else:
- if z==0:
- y-=1
- if povorot=='false':#короче хз как избавиться от лишнего без костыля, буду стирать так
- y-=1
- else:
- y+=1
- vertical+=[v[y] for v in matrix]#просчет вертикальной строки
- if povorot=='false':#проверка был ли поворот
- for z in range(len(matrix[0])):#если не был идем вниз
- if vertical[x]==0:
- vertical[x]=(s)
- s+=1
- x+=1
- else:
- if z==0:
- x+=1
- else:#ну или вверх
- for z in range(len(matrix[0])):
- if vertical[x]==0:
- vertical[x]=(s)
- s+=1
- x-=1
- else:
- if z==0:
- x-=1
- if povorot=='false':#хочу умереть
- x-=1
- else:
- x+=1
- for k in range(len(vertical)):
- p=vertical[k]
- matrix[k][y]=(p)
- vertical=[]
- k=0
- if povorot=='false':
- povorot='true'
- else:
- povorot='false'
- for rez in range(n):
- print(*matrix[(rez)])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement