[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.D12 as D12
import qualified Aoc.Y2020.D13 as D13 import qualified Aoc.Y2020.D13 as D13
import qualified Aoc.Y2020.D14 as D14 import qualified Aoc.Y2020.D14 as D14
import qualified Aoc.Y2020.D15 as D15
year :: Year year :: Year
year = Year 2020 year = Year 2020
@ -34,4 +35,5 @@ year = Year 2020
, (12, D12.day) , (12, D12.day)
, (13, D13.day) , (13, D13.day)
, (14, D14.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