diff options
Diffstat (limited to 'haskell/p14.hs')
-rw-r--r-- | haskell/p14.hs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/haskell/p14.hs b/haskell/p14.hs new file mode 100644 index 0000000..fae33f8 --- /dev/null +++ b/haskell/p14.hs @@ -0,0 +1,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 |