blob: dc89b3cfca2aa3da0e8bcf831954a7f7887dc8ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
from math import ceil
n = int(input('Введите размер стороны матрицы: '))
m = int(input('Введите вычисляемую строку: '))
while m < 1 or m > n:
print('Неверный номер строки')
m = int(input('Введите вычисляемую строку: '))
RIGHT, DOWN, LEFT, UP = range(4)
row = [0 for _ in range(n)]
current = [0, 0]
direction = RIGHT
xshift = 0
yshift = 0
for i in range(1, n ** 2 + 1):
if current[1] == m - 1:
row[current[0]] = i
if direction == RIGHT:
if current[0] + 1 >= n - ceil(xshift / 2):
direction = DOWN
current[1] += 1
xshift += 1
else:
current[0] += 1
elif direction == DOWN:
if current[1] + 1 >= n - yshift // 2:
direction = LEFT
current[0] -= 1
yshift += 1
else:
current[1] += 1
elif direction == LEFT:
if current[0] - 1 < 0 + xshift // 2:
direction = UP
current[1] -= 1
xshift += 1
else:
current[0] -= 1
elif direction == UP:
if current[1] - 1 < 0 + ceil(yshift / 2):
direction = RIGHT
current[0] += 1
yshift += 1
else:
current[1] -= 1
print(*row)
|