summaryrefslogtreecommitdiff
path: root/2021/6.hs
diff options
context:
space:
mode:
Diffstat (limited to '2021/6.hs')
-rw-r--r--2021/6.hs20
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)