aboutsummaryrefslogtreecommitdiff
path: root/python/028-number_spiral_diagonals.py
blob: ca657d52efc184f53bf973c73fc0a09abeeec11a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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)