diff options
| author | Андрей Гущин <saintruler@gmail.com> | 2019-06-06 10:01:27 +0300 |
|---|---|---|
| committer | Андрей Гущин <saintruler@gmail.com> | 2019-06-06 10:01:27 +0300 |
| commit | b5c3ed814a2181dfc2f2b7e88232671858715daf (patch) | |
| tree | a2cbf1afa297862322d947117f075b1e9383524c | |
| parent | 79aa726a8e8a5b329a3daa02d09443bc680a979a (diff) | |
| parent | f95cef7fd009186f186b4b5e281b0ce0692bee47 (diff) | |
Merge branch 'day2.5_task1' into 'master'
День 2.5, задача 1
See merge request saintruler/trainee!12
| -rw-r--r-- | day2.5/task1/task1.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/day2.5/task1/task1.py b/day2.5/task1/task1.py new file mode 100644 index 0000000..f7ce690 --- /dev/null +++ b/day2.5/task1/task1.py @@ -0,0 +1,45 @@ +n = int(input()) +RIGHT, DOWN, LEFT, UP = range(4) + +matrix = [[0 for _ in range(n)] for _ in range(n)] + +current = [0, 0] +direction = RIGHT + +for i in range(1, n ** 2 + 1): + matrix[current[1]][current[0]] = i + + if direction == RIGHT: + if current[0] + 1 >= n or matrix[current[1]][current[0] + 1] != 0: + direction = DOWN + current[1] += 1 + else: + current[0] += 1 + + elif direction == DOWN: + if current[1] + 1 >= n or matrix[current[1] + 1][current[0]] != 0: + direction = LEFT + current[0] -= 1 + else: + current[1] += 1 + + elif direction == LEFT: + if current[0] - 1 < 0 or matrix[current[1]][current[0] - 1] != 0: + direction = UP + current[1] -= 1 + else: + current[0] -= 1 + + elif direction == UP: + if current[1] - 1 < 0 or matrix[current[1] - 1][current[0]] != 0: + direction = RIGHT + current[0] += 1 + else: + current[1] -= 1 + + +# Переводим все числа в строки и делаем их необходимой длины, чтобы вывод был наглядным +# Длина, до которой дополняем все числа, точно будет равна длине самого большого числа в матрице +maxlen = len(str(n ** 2)) +for row in matrix: + print(*map(lambda num: str(num).rjust(maxlen, ' '), row)) |