Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is formed as follows:
21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13
It can be verified that the sum of the numbers on the diagonals is 101.
What is the sum of the numbers on the diagonals in a 1001 by 1001 spiral formed in the same way?
Run this solution at repl.io
here.
# notes:
# 1) 5 x 5 spiral has 25 numbers, hence 1001 x 1001 spiral has 1002001 numbers
# 2) each square contains an odd square of terms: 1, 9, 25, 49 etc..
odd_squares = [i*i for i in range(1001) if i % 2 != 0]
diag_nums = [1]
for i in odd_squares:
#for each corner add a multiple of k (which is the length of the side of the previous square + 1)
# (to see the pattern unravel, change range to 5)
k = int(i**0.5)+1
diag_nums.append(i+k)
diag_nums.append(i+2*k)
diag_nums.append(i+3*k)
diag_nums.append(i+4*k)
print(sum(diag_nums))