Files
aoc-2022/app/Main.hs
2024-11-18 09:45:28 +01:00

63 lines
1.3 KiB
Haskell

{-# LANGUAGE LambdaCase #-}
module Main where
import Lib
import System.Environment (getArgs)
import Data.List (uncons)
import Data.Maybe (mapMaybe)
paths :: [FilePath]
paths =
[ "./data/01.in"
, "./data/02.in"
, "./data/03.in"
, "./data/04.in"
, "./data/05.in"
, "./data/06.in"
, "./data/07.in"
, "./data/08.in"
, "./data/09.in"
, "./data/10.in"
, "./data/11.in"
, "./data/12.in"
, "./data/13.in"
, "./data/14.in"
, "./data/15.in"
, "./data/16.in"
, "./data/17.in"
, "./data/18.in"
, "./data/19.in"
, "./data/20.in"
, "./data/21.in"
, ""
, ""
, "./data/24.in"
, "./data/25.in"
]
solutions :: [(Int, Day, FilePath)]
solutions =
let maybeSolutions = zip3 [1 ..] days paths
available (num, daySolutions, filepath) = do
(firstSolution, _) <- uncons daySolutions
return (num, firstSolution, filepath)
in mapMaybe available maybeSolutions
runAll :: [(Int, Day, FilePath)] -> IO ()
runAll = mapM_ (\(dayNum, day, path) -> run day path >>= printDR dayNum)
usage :: IO ()
usage = putStrLn "./Main"
main :: IO ()
main =
printHeader
>> getArgs
>>= (\case
["all"] -> runAll solutions
_ -> runAll [last solutions])
>> printFooter