diff options
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) |