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
|