Files
aoc-2022/app/Main.hs

65 lines
1.4 KiB
Haskell
Raw Normal View History

2023-08-27 22:30:00 +02:00
{-# LANGUAGE LambdaCase #-}
module Main where
2023-11-18 09:45:28 +01:00
import Data.List (uncons)
import Data.Maybe (mapMaybe)
2024-11-29 09:07:09 +01:00
import Lib
import System.Environment (getArgs)
2023-08-27 22:30:00 +02:00
2023-08-30 09:32:12 +02:00
paths :: [FilePath]
paths =
2024-11-29 09:07:09 +01:00
[ "./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/23.in",
"./data/24.in",
"./data/25.in"
]
2023-08-28 18:40:38 +02:00
2023-08-30 09:32:12 +02:00
solutions :: [(Int, Day, FilePath)]
2023-11-18 09:45:28 +01:00
solutions =
let maybeSolutions = zip3 [1 ..] days paths
available (num, daySolutions, filepath) = do
(firstSolution, _) <- uncons daySolutions
return (num, firstSolution, filepath)
in mapMaybe available maybeSolutions
2023-08-30 09:32:12 +02:00
2023-08-28 18:40:38 +02:00
runAll :: [(Int, Day, FilePath)] -> IO ()
runAll = mapM_ (\(dayNum, day, path) -> run day path >>= printDR dayNum)
2023-08-27 22:30:00 +02:00
usage :: IO ()
usage = putStrLn "./Main"
main :: IO ()
main =
2024-11-29 09:07:09 +01:00
printHeader
>> getArgs
>>= ( \case
2023-08-30 10:02:11 +02:00
["all"] -> runAll solutions
2024-11-29 09:07:09 +01:00
("day" : dayNumStrs) ->
let dayNums = map read dayNumStrs
in runAll (filter (\(a, _, _) -> a `elem` dayNums) solutions)
_ -> runAll [last solutions]
)
>> printFooter