module Main where import qualified Day1 import qualified Day2 import qualified Day3 import qualified Day4 import qualified Day5 import qualified Day6 import qualified Day7 import qualified Day8 import qualified Day9 import qualified Day10 import qualified Day11 import qualified Day12 import System.Environment (getArgs) parseArgs :: [String] -> Maybe (String, String) parseArgs [s] = Just (s, "inputs/day" ++ s ++ ".txt") parseArgs [s,t] = Just (s, t) parseArgs _ = Nothing main :: IO () main = do args <- getArgs case parseArgs args of Just (day,path) -> do input <- readFile path case day of "1" -> do putStrLn $ "Part 1: " ++ Day1.part1 input putStrLn $ "Part 2: " ++ Day1.part2 input "2" -> do putStrLn $ "Part 1: " ++ Day2.part1 input putStrLn $ "Part 2: " ++ Day2.part2 input "3" -> do putStrLn $ "Part 1: " ++ Day3.part1 input putStrLn $ "Part 2: " ++ Day3.part2 input "4" -> do putStrLn $ "Part 1: " ++ Day4.part1 input putStrLn $ "Part 2: " ++ Day4.part2 input "5" -> do putStrLn $ "Part 1: " ++ Day5.part1 input putStrLn $ "Part 2: " ++ Day5.part2 input "6" -> do putStrLn $ "Part 1: " ++ Day6.part1 input putStrLn $ "Part 2: " ++ Day6.part2 input "7" -> do putStrLn $ "Part 1: " ++ Day7.part1 input putStrLn $ "Part 2: " ++ Day7.part2 input "8" -> do putStrLn $ "Part 1: " ++ Day8.part1 input putStrLn $ "Part 2: " ++ Day8.part2 input "9" -> do putStrLn $ "Part 1: " ++ Day9.part1 input putStrLn $ "Part 2: " ++ Day9.part2 input "10" -> do putStrLn $ "Part 1: " ++ Day10.part1 input putStrLn $ "Part 2: " ++ Day10.part2 input "11" -> do putStrLn $ "Part 1: " ++ Day11.part1 input putStrLn $ "Part 2: " ++ Day11.part2 input "12" -> do putStrLn $ "Part 1: " ++ Day12.part1 input putStrLn $ "Part 2: " ++ Day12.part2 input _ -> error "Invalid day" Nothing -> error "Failed to parse args"