[hs] Solve 2020_13 part 1

This commit is contained in:
Joscha 2020-12-13 10:17:54 +00:00
parent 559659cd73
commit e834e0c6de
2 changed files with 31 additions and 0 deletions

29
hs/src/Aoc/Y2020/D13.hs Normal file
View file

@ -0,0 +1,29 @@
module Aoc.Y2020.D13
( day
) where
import Control.Monad
import Data.Function
import Data.List
import Data.Maybe
import Aoc.Day
import Aoc.Parse
parser :: Parser (Int, [Int])
parser = do
earliest <- decimal
void newline
buses <- sepBy ((Just <$> decimal) <|> (Nothing <$ char 'x')) (char ',')
void newline
pure (earliest, catMaybes buses)
solver :: (Int, [Int]) -> IO ()
solver (earliest, buses) = do
putStrLn ">> Part 1"
let busTimes = [(bus, earliest - mod earliest bus + bus) | bus <- buses]
(nextBus, nextBusTime) = minimumBy (compare `on` snd) busTimes
print $ nextBus * (nextBusTime - earliest)
day :: Day
day = dayParse parser solver