diff options
| author | Charles <sircharlesaze@gmail.com> | 2019-08-11 22:41:34 +0200 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2019-08-11 22:41:34 +0200 |
| commit | 1879caa1dd80cb11dd62403663917ad4bf7cc68e (patch) | |
| tree | ea41c6dd83a9f9bbfe0a891237674342de92d533 /python/028-number_spiral_diagonals.py | |
| parent | 6b16d921543a62d880171791d39bcc58560785fa (diff) | |
| download | project_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.py | 46 |
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) |
