diff options
author | Tom Smeding <tom@tomsmeding.com> | 2021-12-06 21:58:10 +0100 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2021-12-06 21:59:12 +0100 |
commit | 4dd247c0e10c8d1c8466ff16fed1daa282bf9e5e (patch) | |
tree | 8b99dfa2a35f2057a7bf88e998e5d7fc021f1c57 /2021/6.hs | |
parent | 2cade691a86583689f7d3be0fdd8ec2b9638ec67 (diff) |
6
Diffstat (limited to '2021/6.hs')
-rw-r--r-- | 2021/6.hs | 20 |
1 files changed, 20 insertions, 0 deletions
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) |