summaryrefslogtreecommitdiff
path: root/haskell/p14.hs
blob: fae33f851c0b1462891af6a31b9ef8ec50b8a711 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
collatz :: Int -> [Int]
collatz 1 = [1]
collatz n
	| mod n 2 == 0	= n : collatz (div n 2)
	| mod n 2 == 1	= n : collatz (3*n + 1)

p14 :: Int
p14 = p14' 999999 0 0
	where
		p14' 0 maxnum _ = maxnum
		p14' n maxnum maxlen =
			let len = length (collatz n)
			in if len > maxlen
				then p14' (n-1) n len
				else p14' (n-1) maxnum maxlen

main = putStrLn $ "Solution: " ++ show p14