16 lines
362 B
Haskell
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)
|