[hs] Migrate 2019_01
This commit is contained in:
parent
55bc09948b
commit
3e82db1f0c
3 changed files with 22 additions and 9 deletions
|
|
@ -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 ())
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
]
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue