Advent of Code 2025
1module Day3 where
2
3import Data.Char
4
5parse :: String -> [[Int]]
6parse input = map (map digitToInt) (lines input)
7
8maxJoltages :: [Int] -> [Int]
9maxJoltages bank =
10 let update states k = zipWith max states (0 : [10*s + k | s <- states])
11 in foldl update (repeat 0) bank
12
13part1 :: String -> String
14part1 input =
15 show $
16 sum $
17 map (\bank -> (maxJoltages bank) !! 2) $
18 parse input
19
20part2 :: String -> String
21part2 input =
22 show $
23 sum $
24 map (\bank -> (maxJoltages bank) !! 12) $
25 parse input