Files
eulerfunt/haskell/p14.hs
2022-11-07 19:17:35 +05:30

16 lines
362 B
Haskell

import Data.Ord (comparing)
import Data.List (maximumBy)
main :: IO ()
main = putStr $ show $ fst $ maximumBy (comparing snd) $ zip range $ map collatz range
where
range :: [ Int ]
range = [1 .. 10 ^ 6 - 1]
-- eh 12s isn't much
collatz :: Int -> Int
collatz n
| n == 1 = 1
| even n = 1 + collatz (div n 2)
| otherwise = 1 + collatz (3 * n + 1)