From 4dd247c0e10c8d1c8466ff16fed1daa282bf9e5e Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Mon, 6 Dec 2021 21:58:10 +0100 Subject: 6 --- 2021/6.hs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 2021/6.hs (limited to '2021/6.hs') diff --git a/2021/6.hs b/2021/6.hs new file mode 100644 index 0000000..90fe324 --- /dev/null +++ b/2021/6.hs @@ -0,0 +1,20 @@ +module Main where + +import qualified Data.Array as A +import Numeric.Natural + +import Input +import Util + + +main :: IO () +main = do + inp <- map read . toList . splitOn (== ',') . head <$> getInput 6 + let evolve :: A.Array Int Natural -> A.Array Int Natural + evolve arr = A.accumArray (+) 0 (0, 8) $ + [(8, arr A.! 0), (6, arr A.! 0)] ++ + [(i, arr A.! (i + 1)) | i <- [0..7]] + initState = A.accumArray (+) 0 (0, 8) [(i, 1) | i <- inp] + after n = sum (A.elems (iterate evolve initState !! n)) + print (after 80) + print (after 256) -- cgit v1.2.3-54-g00ecf