Advent of Code 2025
at main 2.2 kB view raw
1module Main where 2 3import qualified Day1 4import qualified Day2 5import qualified Day3 6import qualified Day4 7import qualified Day5 8import qualified Day6 9import qualified Day7 10import qualified Day8 11import qualified Day9 12import qualified Day10 13import qualified Day11 14import qualified Day12 15import System.Environment (getArgs) 16 17parseArgs :: [String] -> Maybe (String, String) 18parseArgs [s] = Just (s, "inputs/day" ++ s ++ ".txt") 19parseArgs [s,t] = Just (s, t) 20parseArgs _ = Nothing 21 22main :: IO () 23main = do 24 args <- getArgs 25 case parseArgs args of 26 Just (day,path) -> do 27 input <- readFile path 28 case day of 29 "1" -> do 30 putStrLn $ "Part 1: " ++ Day1.part1 input 31 putStrLn $ "Part 2: " ++ Day1.part2 input 32 "2" -> do 33 putStrLn $ "Part 1: " ++ Day2.part1 input 34 putStrLn $ "Part 2: " ++ Day2.part2 input 35 "3" -> do 36 putStrLn $ "Part 1: " ++ Day3.part1 input 37 putStrLn $ "Part 2: " ++ Day3.part2 input 38 "4" -> do 39 putStrLn $ "Part 1: " ++ Day4.part1 input 40 putStrLn $ "Part 2: " ++ Day4.part2 input 41 "5" -> do 42 putStrLn $ "Part 1: " ++ Day5.part1 input 43 putStrLn $ "Part 2: " ++ Day5.part2 input 44 "6" -> do 45 putStrLn $ "Part 1: " ++ Day6.part1 input 46 putStrLn $ "Part 2: " ++ Day6.part2 input 47 "7" -> do 48 putStrLn $ "Part 1: " ++ Day7.part1 input 49 putStrLn $ "Part 2: " ++ Day7.part2 input 50 "8" -> do 51 putStrLn $ "Part 1: " ++ Day8.part1 input 52 putStrLn $ "Part 2: " ++ Day8.part2 input 53 "9" -> do 54 putStrLn $ "Part 1: " ++ Day9.part1 input 55 putStrLn $ "Part 2: " ++ Day9.part2 input 56 "10" -> do 57 putStrLn $ "Part 1: " ++ Day10.part1 input 58 putStrLn $ "Part 2: " ++ Day10.part2 input 59 "11" -> do 60 putStrLn $ "Part 1: " ++ Day11.part1 input 61 putStrLn $ "Part 2: " ++ Day11.part2 input 62 "12" -> do 63 putStrLn $ "Part 1: " ++ Day12.part1 input 64 putStrLn $ "Part 2: " ++ Day12.part2 input 65 _ -> error "Invalid day" 66 Nothing -> error "Failed to parse args" 67