Advent of Code 2025
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