[hs] Migrate 2019_01

This commit is contained in:
Joscha 2020-12-06 11:24:29 +00:00
parent 55bc09948b
commit 3e82db1f0c
3 changed files with 22 additions and 9 deletions

View file

@ -5,6 +5,7 @@ import Control.Monad
import Options.Applicative import Options.Applicative
import Aoc.Day (Day (..), Year (..)) import Aoc.Day (Day (..), Year (..))
import qualified Aoc.Y2019 as Y2019
import qualified Aoc.Y2020 as Y2020 import qualified Aoc.Y2020 as Y2020
lpad :: a -> Int -> [a] -> [a] lpad :: a -> Int -> [a] -> [a]
@ -28,7 +29,8 @@ dayToParser (DayFile f) = f <$> strArgument (metavar "INPUTFILE")
parser :: Parser (IO ()) parser :: Parser (IO ())
parser = yearsToParser parser = yearsToParser
[ Y2020.year [ Y2019.year
, Y2020.year
] ]
opts :: ParserInfo (IO ()) opts :: ParserInfo (IO ())

View file

@ -1,8 +1,11 @@
module Aoc.Y2019 module Aoc.Y2019
( days ( year
) where ) where
import Aoc.Day import Aoc.Day
import qualified Aoc.Y2019.D01 as D01
days :: [Day] year :: Year
days = [] year = Year 2019
[ ( 1, D01.day)
]

View file

@ -1,21 +1,29 @@
module Aoc.Y2019.A01 module Aoc.Y2019.D01
( solve201901 ( day
) where ) where
import Aoc.Day
import Aoc.Parse
fuel :: Integer -> Integer fuel :: Integer -> Integer
fuel n = (n `div` 3) - 2 fuel n = (n `div` 3) - 2
iteratedFuel :: Integer -> Integer iteratedFuel :: Integer -> Integer
iteratedFuel = sum . takeWhile (> 0) . tail . iterate fuel iteratedFuel = sum . takeWhile (> 0) . tail . iterate fuel
solve201901 :: FilePath -> IO () parser :: Parser [Integer]
solve201901 f = do parser = manyLines decimal
values <- map read . lines <$> readFile f
solver :: [Integer] -> IO ()
solver values = do
putStrLn ">> Part 1" putStrLn ">> Part 1"
putStr "Total fuel: " putStr "Total fuel: "
print $ sum $ map fuel values print $ sum $ map fuel values
putStrLn ""
putStrLn ">> Part 2" putStrLn ">> Part 2"
putStr "Total fuel (iterated): " putStr "Total fuel (iterated): "
print $ sum $ map iteratedFuel values print $ sum $ map iteratedFuel values
day :: Day
day = dayParse parser solver