aboutsummaryrefslogtreecommitdiff
path: root/python/028-number_spiral_diagonals.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/028-number_spiral_diagonals.py')
-rw-r--r--python/028-number_spiral_diagonals.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/python/028-number_spiral_diagonals.py b/python/028-number_spiral_diagonals.py
new file mode 100644
index 0000000..ca657d5
--- /dev/null
+++ b/python/028-number_spiral_diagonals.py
@@ -0,0 +1,46 @@
+from itertools import count
+
+size = 1001
+center = (size-1) // 2
+grid = [[None for _ in range(size)] for _ in range(size)]
+
+i = 1
+x, y = center, center
+for cycle_nb in count():
+ grid[x][y] = i
+ y += 1
+ i += 1
+
+ if grid[0][-1] != None:
+ break
+
+ for _ in range(cycle_nb * 2 - 1):
+ grid[x][y] = i
+ x += 1
+ i += 1
+
+ for _ in range(cycle_nb * 2):
+ grid[x][y] = i
+ y -= 1
+ i += 1
+
+ for _ in range(cycle_nb * 2):
+ grid[x][y] = i
+ x -= 1
+ i += 1
+
+ for _ in range(cycle_nb * 2):
+ grid[x][y] = i
+ y += 1
+ i += 1
+
+
+diag_sum = 0
+for x, y in zip(range(size), range(size)):
+ diag_sum += grid[x][y]
+
+adiag_sum = 0
+for x, y in zip(reversed(range(size)), range(size)):
+ adiag_sum += grid[x][y]
+
+print(diag_sum + adiag_sum - 1)