diff --git a/Haskell/p014.hs b/Haskell/p014.hs index d84ec3c..d810b45 100644 --- a/Haskell/p014.hs +++ b/Haskell/p014.hs @@ -15,10 +15,10 @@ -- NOTE: Once the chain starts the terms are allowed to go above one million. collatz :: (Integral a) => a -> [a] +collatz 1 = [1] collatz n - | n == 1 = [1] - | n `mod` 2 == 0 = n:(collatz $ n `div` 2) - | otherwise = n:(collatz $ 3 * n + 1) + | even n = n:(collatz $ n `div` 2) + | odd n = n:(collatz $ 3 * n + 1) maxCollatzLength :: Int -> Int maxCollatzLength n = snd $ maximum $ zip [ length (collatz x) | x <- [1..n-1] ] [1..n-1]