Hailstone sequence: Difference between revisions

Content added Content deleted
(add dfn version)
Line 4,451: Line 4,451:
<lang haskell>import Data.List (maximumBy)
<lang haskell>import Data.List (maximumBy)
import Data.Ord (comparing)
import Data.Ord (comparing)

-------------------- HAILSTONE SEQUENCE ------------------


collatz :: Int -> Int
collatz :: Int -> Int
Line 4,463: Line 4,465:
longestChain =
longestChain =
fst $
fst $
maximumBy (comparing snd) $ (,) <*> (length . hailstone) <$> [1 .. 100000]
maximumBy (comparing snd) $
(,) <*> (length . hailstone) <$> [1 .. 100000]


--------------------------- TEST -------------------------
--------------------------- TEST -------------------------
Line 4,470: Line 4,473:
mapM_
mapM_
putStrLn
putStrLn
[ "Collatz sequence for 27: "
[ "Collatz sequence for 27: ",
, (show . hailstone) 27
(show . hailstone) 27,
, "The number " <> show longestChain
"The number " <> show longestChain,
, "has the longest hailstone sequence for any number less then 100000. "
"has the longest hailstone sequence",
"for any number less then 100000. ",
, "The sequence has length: " <> (show . length . hailstone $ longestChain)
"The sequence has length: "
<> (show . length . hailstone $ longestChain)
]</lang>
]</lang>
{{out}}
{{Out}}
<pre>Collatz sequence for 27:
<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]
[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]