aboutsummaryrefslogtreecommitdiff
path: root/python/028-number_spiral_diagonals.py
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-08-11 22:41:34 +0200
committerCharles <sircharlesaze@gmail.com>2019-08-11 22:41:34 +0200
commit1879caa1dd80cb11dd62403663917ad4bf7cc68e (patch)
treeea41c6dd83a9f9bbfe0a891237674342de92d533 /python/028-number_spiral_diagonals.py
parent6b16d921543a62d880171791d39bcc58560785fa (diff)
downloadproject_euler-1879caa1dd80cb11dd62403663917ad4bf7cc68e.tar.gz
project_euler-1879caa1dd80cb11dd62403663917ad4bf7cc68e.tar.bz2
project_euler-1879caa1dd80cb11dd62403663917ad4bf7cc68e.zip
rename all file with 3 zero padding
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)