[hs] Solve 2020_13 part 1
This commit is contained in:
parent
559659cd73
commit
e834e0c6de
2 changed files with 31 additions and 0 deletions
|
|
@ -15,6 +15,7 @@ import qualified Aoc.Y2020.D09 as D09
|
||||||
import qualified Aoc.Y2020.D10 as D10
|
import qualified Aoc.Y2020.D10 as D10
|
||||||
import qualified Aoc.Y2020.D11 as D11
|
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
|
||||||
|
|
||||||
year :: Year
|
year :: Year
|
||||||
year = Year 2020
|
year = Year 2020
|
||||||
|
|
@ -30,4 +31,5 @@ year = Year 2020
|
||||||
, (10, D10.day)
|
, (10, D10.day)
|
||||||
, (11, D11.day)
|
, (11, D11.day)
|
||||||
, (12, D12.day)
|
, (12, D12.day)
|
||||||
|
, (13, D13.day)
|
||||||
]
|
]
|
||||||
|
|
|
||||||
29
hs/src/Aoc/Y2020/D13.hs
Normal file
29
hs/src/Aoc/Y2020/D13.hs
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue