Hailstone sequence: Difference between revisions

m
(add dfn version)
Line 4,451:
<lang haskell>import Data.List (maximumBy)
import Data.Ord (comparing)
 
-------------------- HAILSTONE SEQUENCE ------------------
 
collatz :: Int -> Int
Line 4,463 ⟶ 4,465:
longestChain =
fst $
maximumBy (comparing snd) $ (,) <*> (length . hailstone) <$> [1 .. 100000]
(,) <*> (length . hailstone) <$> [1 .. 100000]
 
--------------------------- TEST -------------------------
Line 4,470 ⟶ 4,473:
mapM_
putStrLn
[ "Collatz sequence for 27: ",
, (show . hailstone) 27,
, "The number " <> show longestChain,
, "has the longest hailstone sequence for any number less then 100000. ",
"for any number less then 100000. ",
, "The sequence has length: " <> (show . length . hailstone $ longestChain)
"The sequence has length: "
, "The sequence has length: " <> (show . length . hailstone $ longestChain)
]</lang>
{{outOut}}
<pre>Collatz sequence for 27:
[27,82,41,124,62,31,94,47,142,71,214,107,322,161,484,242,121,364,182,91,274,137,412,206,103,310,155,466,233,700,350,175,526,263,790,395,1186,593,1780,890,445,1336,668,334,167,502,251,754,377,1132,566,283,850,425,1276,638,319,958,479,1438,719,2158,1079,3238,1619,4858,2429,7288,3644,1822,911,2734,1367,4102,2051,6154,3077,9232,4616,2308,1154,577,1732,866,433,1300,650,325,976,488,244,122,61,184,92,46,23,70,35,106,53,160,80,40,20,10,5,16,8,4,2]
9,655

edits