diff options
| author | Андрей Гущин <saintruler@gmail.com> | 2019-06-06 10:01:32 +0300 |
|---|---|---|
| committer | Андрей Гущин <saintruler@gmail.com> | 2019-06-06 10:01:32 +0300 |
| commit | 33f6717e4252d3f729bdb0ea7769f8488ae70d60 (patch) | |
| tree | a6354d5f137b2ff945e377de12bead96a98e76fc | |
| parent | b5c3ed814a2181dfc2f2b7e88232671858715daf (diff) | |
| parent | ebe8c9ddc7386a931956adca0530f6c6ecce9ab0 (diff) | |
Merge branch 'day2.5_task2' into 'master'
День 2.5, задача 2
See merge request saintruler/trainee!13
| -rw-r--r-- | day2.5/task2/task2.py | 54 |
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) |