[hs] Solve 2020_15 part 1

This commit is contained in:
Joscha 2020-12-15 12:16:41 +00:00
parent dde1487510
commit 26d2a1b9fd
2 changed files with 30 additions and 0 deletions

View file

@ -17,6 +17,7 @@ import qualified Aoc.Y2020.D11 as D11
import qualified Aoc.Y2020.D12 as D12
import qualified Aoc.Y2020.D13 as D13
import qualified Aoc.Y2020.D14 as D14
import qualified Aoc.Y2020.D15 as D15
year :: Year
year = Year 2020
@ -34,4 +35,5 @@ year = Year 2020
, (12, D12.day)
, (13, D13.day)
, (14, D14.day)
, (15, D15.day)
]

28
hs/src/Aoc/Y2020/D15.hs Normal file
View file

@ -0,0 +1,28 @@
module Aoc.Y2020.D15
( day
) where
import Data.List
import Aoc.Day
import Aoc.Parse
parser :: Parser [Int]
parser = (decimal `sepBy` char ',') <* newline
step :: [Int] -> [Int]
step [] = error "list must not be empty"
step (x:xs) = case elemIndex x xs of
Nothing -> 0 : x : xs
Just i -> (i + 1) : x : xs
stepUntil :: Int -> [Int] -> [Int]
stepUntil amount nums = iterate step nums !! (amount - length nums)
solver :: [Int] -> IO ()
solver nums = do
putStrLn ">> Part 1"
print $ head $ stepUntil 2020 $ reverse nums
day :: Day
day = dayParse parser solver