summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorАндрей Гущин <saintruler@gmail.com>2019-06-06 10:01:27 +0300
committerАндрей Гущин <saintruler@gmail.com>2019-06-06 10:01:27 +0300
commitb5c3ed814a2181dfc2f2b7e88232671858715daf (patch)
treea2cbf1afa297862322d947117f075b1e9383524c
parent79aa726a8e8a5b329a3daa02d09443bc680a979a (diff)
parentf95cef7fd009186f186b4b5e281b0ce0692bee47 (diff)
Merge branch 'day2.5_task1' into 'master'
День 2.5, задача 1 See merge request saintruler/trainee!12
-rw-r--r--day2.5/task1/task1.py45
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))