diff --git a/2021/day06/day06.hs b/2021/day06/day06.hs new file mode 100644 index 0000000..75e548c --- /dev/null +++ b/2021/day06/day06.hs @@ -0,0 +1,14 @@ +import Data.List.Split + +main :: IO () +main = do + input <- map read <$> splitOn "," <$> readFile "day06/input" + print $ day06 input 80 + print $ day06 input 256 + +day06 :: [Int] -> Int -> Int +day06 input days = sum $ map (\x->last $ take x fibFish) i + where i = map ((+3) . (+ days) . abs . subtract 6) input + +fibFish :: [Int] +fibFish = zipWith (+) ((take 7 $ repeat 1) ++ fibFish) ((take 9 $ repeat 0) ++ fibFish) diff --git a/2021/day06/input b/2021/day06/input new file mode 100644 index 0000000..8bed7ab --- /dev/null +++ b/2021/day06/input @@ -0,0 +1 @@ +1,3,4,1,5,2,1,1,1,1,5,1,5,1,1,1,1,3,1,1,1,1,1,1,1,2,1,5,1,1,1,1,1,4,4,1,1,4,1,1,2,3,1,5,1,4,1,2,4,1,1,1,1,1,1,1,1,2,5,3,3,5,1,1,1,1,4,1,1,3,1,1,1,2,3,4,1,1,5,1,1,1,1,1,2,1,3,1,3,1,2,5,1,1,1,1,5,1,5,5,1,1,1,1,3,4,4,4,1,5,1,1,4,4,1,1,1,1,3,1,1,1,1,1,1,3,2,1,4,1,1,4,1,5,5,1,2,2,1,5,4,2,1,1,5,1,5,1,3,1,1,1,1,1,4,1,2,1,1,5,1,1,4,1,4,5,3,5,5,1,2,1,1,1,1,1,3,5,1,2,1,2,1,3,1,1,1,1,1,4,5,4,1,3,3,1,1,1,1,1,1,1,1,1,5,1,1,1,5,1,1,4,1,5,2,4,1,1,1,2,1,1,4,4,1,2,1,1,1,1,5,3,1,1,1,1,4,1,4,1,1,1,1,1,1,3,1,1,2,1,1,1,1,1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,2,5,1,2,1,1,1,1,1,1,1,1,1 diff --git a/2021/day06/testinput b/2021/day06/testinput new file mode 100644 index 0000000..55129f1 --- /dev/null +++ b/2021/day06/testinput @@ -0,0 +1 @@ +3,4,3,1,2