[hs] Solve 2020_15 part 1
This commit is contained in:
parent
dde1487510
commit
26d2a1b9fd
2 changed files with 30 additions and 0 deletions
|
|
@ -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
28
hs/src/Aoc/Y2020/D15.hs
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue