module Day06 where import Data.Array import Data.List.Split updateArray :: Array Int Int -> Array Int Int updateArray a = array (0,8) $ map (\i -> (i,calculate i)) [0..8] where calculate 8 = a ! 0 calculate 6 = (a ! 0) + (a ! 7) calculate x = a ! (x+1) calcArray :: Int -> Array Int Int -> Array Int Int calcArray n = foldr (.) id $ replicate n updateArray main :: IO () main = do input <- map (read :: String -> Int) . splitOn "," <$> getContents let starting_array = array (0,8) $ map (\val -> (val,length $ filter (==val) input)) [0..8] putStr "part 1: " print $ sum $ elems $ calcArray 80 starting_array putStr "part 2: " print $ sum $ elems $ calcArray 256 starting_array