Advent of Code 2025

Day 3

Changed files
+20 -2
src
+20 -2
src/Day3.hs
···
module Day3 where
part1 :: String -> String
-
part1 _ = "Day 3 part 1"
part2 :: String -> String
-
part2 _ = "Day 3 part 2"
···
module Day3 where
+
import Data.Char
+
+
parse :: String -> [[Int]]
+
parse input = map (map digitToInt) (lines input)
+
+
maxJoltages :: [Int] -> [Int]
+
maxJoltages bank =
+
let update states k = zipWith max states (0 : [10*s + k | s <- states])
+
in foldl update (repeat 0) bank
+
part1 :: String -> String
+
part1 input =
+
show $
+
sum $
+
map (\bank -> (maxJoltages bank) !! 2) $
+
parse input
part2 :: String -> String
+
part2 input =
+
show $
+
sum $
+
map (\bank -> (maxJoltages bank) !! 12) $
+
parse input