summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorАндрей Гущин <saintruler@gmail.com>2019-06-06 10:01:32 +0300
committerАндрей Гущин <saintruler@gmail.com>2019-06-06 10:01:32 +0300
commit33f6717e4252d3f729bdb0ea7769f8488ae70d60 (patch)
treea6354d5f137b2ff945e377de12bead96a98e76fc
parentb5c3ed814a2181dfc2f2b7e88232671858715daf (diff)
parentebe8c9ddc7386a931956adca0530f6c6ecce9ab0 (diff)
Merge branch 'day2.5_task2' into 'master'
День 2.5, задача 2 See merge request saintruler/trainee!13
-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)