summaryrefslogtreecommitdiff
path: root/day2.5
diff options
context:
space:
mode:
authorAndrew <saintruler@gmail.com>2019-04-04 19:56:50 +0400
committerAndrew <saintruler@gmail.com>2019-04-04 19:56:50 +0400
commitebe8c9ddc7386a931956adca0530f6c6ecce9ab0 (patch)
treedb7ebff9dd86567b878080c1ff7082e0d165ded5 /day2.5
parent402d0d2b9ebd76b8e99eddceeb85c4a66030b51b (diff)
Вторая дополнительная задача
Diffstat (limited to 'day2.5')
-rw-r--r--day2.5/task2/task2.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/day2.5/task2/task2.py b/day2.5/task2/task2.py
new file mode 100644
index 0000000..dc89b3c
--- /dev/null
+++ b/day2.5/task2/task2.py
@@ -0,0 +1,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)