Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def m():
- # переменная для хранения введённого числа
- # определяющая размерность "спирали"
- n = int(input("Enter your number: "))
- # двумерный список, который будем заполнять числами
- l = [[0]*n for i in range(n)]
- # номер витка спирали, вдоль которого движемся
- step=1
- # направление движения. 1- право, 2-низ, 3-лево, 4-верх
- dir = 1
- # значение последнего добавленного числа
- last = 1
- # индексы, i - вертикаль, j - горизонталь
- i,j = 0,0
- # добавление первой цифры
- l[i][j] = last
- last+=1
- while last <= n*n:
- # движение вправо, поэтому увеличиваем индекс j,
- # который отвечает за столбцы, если достигли правой границы -
- # переключаем направление на "вниз"
- if dir == 1:
- if j == n-step:
- dir+=1
- i+=1
- else:
- j += 1
- # движение вниз, поэтому увеличиваем индекс i,
- # который отвечает за строки, если достигли нижней границы -
- # переключаем направление на "влево"
- elif dir == 2:
- if i == n-step:
- dir+=1
- j-=1
- else:
- i += 1
- # движение влево, поэтому уменьшаем индекс j,
- # который отвечает за столбцы, если достигли левой границы -
- # переключаем направление на "вверх"
- elif dir == 3:
- if j < step:
- dir+=1
- i-=1
- else:
- j -= 1
- # движение вверх, поэтому уменьшаем индекс i,
- # который отвечает за строки, если достигли нижней границы -
- # переключаем направление на "вправо" и увеличиваем переменную
- # которая ведёт подсчёт "витков" спирали
- elif dir == 4:
- if i == step:
- dir=1
- step+=1
- j+=1
- else:
- i-=1
- # запись числа в список
- l[i][j] = last
- last+=1
- # Вывод результата на экран
- for i in range(n):
- for j in range(n):
- print(l[i][j], end="\t")
- print()
- m()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement