From 47b3230d69fb7979c0b81c0f27adb95863938aef Mon Sep 17 00:00:00 2001 From: Bill Ewanick Date: Mon, 27 Nov 2023 00:15:55 -0500 Subject: [PATCH] Bigger numbers, try parallel computation --- src/3n+1/Main.hs | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/3n+1/Main.hs b/src/3n+1/Main.hs index fa64876..ec9d22e 100644 --- a/src/3n+1/Main.hs +++ b/src/3n+1/Main.hs @@ -3,11 +3,28 @@ The Simplest Math Problem No One Can Solve - Collatz Conjecture https://youtu.be/094y1Z2wpJg -} -import Control.Monad () -import Debug.Trace (trace) +import Control.Parallel.Strategies (parMap, rdeepseq, rpar) +import Data.Set (fromList) +import Debug.Trace (trace) main :: IO () -main = print $ take 100 $ map f [2^1000..] +main = do + let results = + parMap rdeepseq f [10^100_000..10^100_000+100] :: [Integer] + print (fromList results) +-- main = print $ fromList $ dxs +-- main = print $ fromList $ take 300 $ map f [2^100_000..] + -- fromList [100001,717859] + +-- main = print $ fromList $ take 3 $ map f [2^310997..] +-- main = print $ f $ 2^310997 + 2 + +lst :: [Integer] +lst = take 300 [2^100_000..] + +dxs :: [Integer] +dxs = parMap rpar f lst + f :: Integer -> Integer f n = s 1 n