Задача с Эйлера про гипотезу Коллатца
Aug. 31st, 2014 12:23 amНайти длиннейшую сиракузскую последовательность со стартовым числом менее мильона
https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0_%D0%9A%D0%BE%D0%BB%D0%BB%D0%B0%D1%82%D1%86%D0%B0
https://ru.wikipedia.org/wiki/%D0%93%D0%B8%D0%BF%D0%BE%D1%82%D0%B5%D0%B7%D0%B0_%D0%9A%D0%BE%D0%BB%D0%BB%D0%B0%D1%82%D1%86%D0%B0
import Data.List collatzTransform :: Integral a => a -> a collatzTransform n = if (n `mod` 2) == 0 then n `quot` 2 else 3*n + 1 collatzSequence :: Integral a => [a] -> [a] collatzSequence (1:xs) = [] collatzSequence (x:xs) = newVal : collatzSequence(newVal:xs) where newVal = collatzTransform $ x lens = map (\x -> (x, length $ collatzSequence [x])) [1..999999] sortGT (a1, b1) (a2, b2) = compare b1 b2 main = do print $ maximumBy sortGT lens