From 6bed97c143b1a67f233a39ac9a052bf0f1d1ebcc Mon Sep 17 00:00:00 2001 From: Claudio Maggioni Date: Thu, 28 Mar 2019 16:56:59 +0100 Subject: [PATCH] Added spiral solution --- spiral.py | 60 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 spiral.py diff --git a/spiral.py b/spiral.py new file mode 100755 index 0000000..fd13b29 --- /dev/null +++ b/spiral.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 + +import sys + +def parsematrix(m, n): + Mat = [] + for i in range(m): + A = sys.stdin.readline().split() + row = [] + for j in range(n): + row.append(int(A[j])) + Mat.append(row) + return Mat + +def printmatrix(Mat, m, n): + if m == 0 or n == 0: + return + + i = 0 + min_j = -1 + max_j = n + min_i = -1 + max_i = m + j = 0 + direction = 0 # 0 right, 1 down, 2 left, 3 up + + while i > min_i and i < max_i and j < max_j and j > min_j: + if i == 0 and j == 0: + print(Mat[i][j], end="") + else: + print(" " + str(Mat[i][j]), end="") + + if direction == 0 and j == n - i - 1: + min_i = i + direction = 1 + if direction == 1 and i == m - (n - j): + max_j = j + direction = 2 + if direction == 2 and j == m - i - 1: + max_i = i + direction = 3 + if direction == 3 and j == i - 1: + min_j = j + direction = 0 + + if direction == 0: + j = j + 1 + elif direction == 1: + i = i + 1 + elif direction == 2: + j = j - 1 + else: + i = i - 1 + +if __name__ == "__main__": + A = sys.stdin.readline().split() + m = int(A[0]) + n = int(A[1]) + Mat = parsematrix(m, n) + printmatrix(Mat, m, n)