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 ++++++++++++++++++++ 2021/6.in | 1 + 2021/Util.hs | 3 ++- 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 2021/6.hs create mode 100644 2021/6.in 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) diff --git a/2021/6.in b/2021/6.in new file mode 100644 index 0000000..70f9ad7 --- /dev/null +++ b/2021/6.in @@ -0,0 +1 @@ +1,4,3,3,1,3,1,1,1,2,1,1,1,4,4,1,5,5,3,1,3,5,2,1,5,2,4,1,4,5,4,1,5,1,5,5,1,1,1,4,1,5,1,1,1,1,1,4,1,2,5,1,4,1,2,1,1,5,1,1,1,1,4,1,5,1,1,2,1,4,5,1,2,1,2,2,1,1,1,1,1,5,5,3,1,1,1,1,1,4,2,4,1,2,1,4,2,3,1,4,5,3,3,2,1,1,5,4,1,1,1,2,1,1,5,4,5,1,3,1,1,1,1,1,1,2,1,3,1,2,1,1,1,1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,4,5,1,3,1,4,4,2,3,4,1,1,1,5,1,1,1,4,1,5,4,3,1,5,1,1,1,1,1,5,4,1,1,1,4,3,1,3,3,1,3,2,1,1,3,1,1,4,5,1,1,1,1,1,3,1,4,1,3,1,5,4,5,1,1,5,1,1,4,1,1,1,3,1,1,4,2,3,1,1,1,1,2,4,1,1,1,1,1,2,3,1,5,5,1,4,1,1,1,1,3,3,1,4,1,2,1,3,1,1,1,3,2,2,1,5,1,1,3,2,1,1,5,1,1,1,1,1,1,1,1,1,1,2,5,1,1,1,1,3,1,1,1,1,1,1,1,1,5,5,1 diff --git a/2021/Util.hs b/2021/Util.hs index 7cd674d..f1e6046 100644 --- a/2021/Util.hs +++ b/2021/Util.hs @@ -1,5 +1,6 @@ -module Util where +module Util (module Util, toList) where +import Data.Foldable (toList) import Data.List import Data.List.NonEmpty (NonEmpty(..), (<|)) -- cgit v1.2.3-54-g00ecf