Re-add first solution from temporary aoc repo

This commit is contained in:
Joscha 2019-12-05 08:54:33 +00:00
parent acf0e97b86
commit c0c9e1c623
4 changed files with 44 additions and 8 deletions

View file

@ -1,6 +1,28 @@
module Main where module Main where
import Lib import Options.Applicative
import Aoc.Y2019.A01
data Settings = Settings
{ function :: FilePath -> IO ()
, filename :: FilePath
}
solutions :: Parser (FilePath -> IO ())
solutions = subparser $ mconcat $ map (\(name, func) -> command name (info (pure func) mempty))
[ ("201901", solve201901)
]
parser :: Parser Settings
parser = Settings
<$> solutions
<*> strArgument (metavar "INPUTFILE")
opts :: ParserInfo Settings
opts = info (helper <*> parser) $ fullDesc <> failureCode 1
main :: IO () main :: IO ()
main = someFunc main = do
settings <- execParser opts
function settings $ filename settings

View file

@ -21,6 +21,7 @@ description: Please see the README on GitHub at <https://github.com/gith
dependencies: dependencies:
- base >= 4.7 && < 5 - base >= 4.7 && < 5
- optparse-applicative
library: library:
source-dirs: src source-dirs: src

19
hs/src/Aoc/Y2019/A01.hs Normal file
View file

@ -0,0 +1,19 @@
module Aoc.Y2019.A01
( solve201901
) where
fuel :: Integer -> Integer
fuel n = (n `div` 3) - 2
iteratedFuel :: Integer -> Integer
iteratedFuel = sum . takeWhile (> 0) . tail . iterate fuel
solve201901 :: FilePath -> IO ()
solve201901 f = do
values <- (map read . lines) <$> readFile f
putStr "Total fuel: "
print $ sum $ map fuel values
putStr "Total fuel (iterated): "
print $ sum $ map iteratedFuel values

View file

@ -1,6 +0,0 @@
module Lib
( someFunc
) where
someFunc :: IO ()
someFunc = putStrLn "someFunc"