-- 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? ne = 1 : zipWith (+) nw [2,4..] se = zipWith (+) ne [2,4..] sw = zipWith (+) se [2,4..] nw = zipWith (+) sw [2,4..] -- Sum of diagonals of an m by m spiral; m = 2*n + 1. diagSum n = sum (take (n+1) ne ++ take n se ++ take n sw ++ take n nw) main = print $ (diagSum 2, diagSum 500)