diff --git a/README.md b/README.md index 17d39f6..26e8eb7 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,4 @@ |03 |★ ★ |09 | | |04 |★ ★ |10 | | |05 |★ ★ |11 | | -|06 | |12 | | +|06 |★ ★ |12 | | diff --git a/adventofcode2025.cabal b/adventofcode2025.cabal index 0d92603..710ba8e 100644 --- a/adventofcode2025.cabal +++ b/adventofcode2025.cabal @@ -35,3 +35,4 @@ executable adventofcode2025 Day03 Day04 Day05 + Day06 diff --git a/src/Day06.hs b/src/Day06.hs new file mode 100644 index 0000000..8fb3c76 --- /dev/null +++ b/src/Day06.hs @@ -0,0 +1,53 @@ +module Day06 + ( day06_1, + day06_2, + ) +where + +import Data.List (groupBy, transpose) + +solveProblem :: [String] -> Int +solveProblem problem = + let op = last problem + values = map read $ init problem + in case op of + "+" -> sum values + "*" -> product values + _ -> 0 + +solveProblem' :: [String] -> Int +solveProblem' [] = 0 +solveProblem' (x : xs) = + let op = last x + v1 = read $ init x + values = v1 : [read v | v <- xs] + in case op of + '+' -> sum values + '*' -> product values + _ -> 0 + +parseInput :: IO [[String]] +parseInput = do + transpose . map words . lines <$> readFile "input/day6.txt" + +parseInput' :: IO [[String]] +parseInput' = do + input <- transpose . lines <$> readFile "input/day6.txt" + let problems = map (filter (not . all (== ' '))) $ groupBy (\_ y -> not (all (== ' ') y)) input + return problems + +day06_1 :: IO () +day06_1 = do + input <- parseInput + let result = sum $ map solveProblem input + putStrLn $ + "Day 6, Puzzle 1 solution: " + ++ show result + +day06_2 :: IO () +day06_2 = do + input <- parseInput' + let result = sum $ map solveProblem' input + putStrLn $ + "Day 6, Puzzle 2 solution: " + ++ show result diff --git a/src/Main.hs b/src/Main.hs index 35a14b4..09ad909 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -5,6 +5,7 @@ import Day02 (day02_1, day02_2) import Day03 (day03_1, day03_2) import Day04 (day04_1, day04_2) import Day05 (day05_1, day05_2) +import Day06 (day06_1, day06_2) import System.Environment (getArgs) main :: IO () @@ -36,6 +37,11 @@ main = do "5" : _ -> do day05_1 day05_2 + "6" : "1" : _ -> day06_1 + "6" : "2" : _ -> day06_2 + "6" : _ -> do + day06_1 + day06_2 "all" : _ -> do day01_1 day01_2 @@ -47,4 +53,6 @@ main = do day04_2 day05_1 day05_2 + day06_1 + day06_2 _ -> error "Not implemented"