Advent of Code 2025

Day 12

Changed files
+14 -2
src
+14 -2
src/Day12.hs
···
module Day12 where
part1 :: String -> String
-
part1 _ = "Day 12 part 1"
part2 :: String -> String
-
part2 _ = "Day 12 part 2"
···
module Day12 where
+
parse :: String -> [(Int,Int,[Int])]
+
parse = map parseLine . drop 30 . lines
+
where parseLine line =
+
let w = words line
+
(size,counts) = (head w, map read $ tail w)
+
cols = read $ take 2 size
+
rows = read $ take 2 $ drop 3 size
+
in (cols, rows, counts)
+
part1 :: String -> String
+
part1 input =
+
let regions = parse input
+
slack (cols, rows, counts) = cols * rows - 7 * (counts !! 0) - 7 * (counts !! 1) - 7 * (counts !! 2) - 5 * (counts !! 3) - 7 * (counts !! 4) - 6 * (counts !! 5)
+
in show $ length $ filter (> 0) $ map slack regions
part2 :: String -> String
+
part2 _ = "You win!"