# Day 12 ```elixir Mix.install([:kino_aoc]) ``` ## Parsing ```elixir {:ok, puzzle_input} = KinoAOC.download_puzzle("2025", "12", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) ``` ```elixir {areas, boxes} = puzzle_input |> String.split("\n\n") |> List.pop_at(-1) ``` ```elixir areas = areas |> String.split("\n") |> Enum.map(fn raw -> [area | counts] = String.split(raw) area = area |> String.trim(":") |> String.split("x") |> Enum.map(&String.to_integer/1) |> Enum.product() counts = Enum.map(counts, &String.to_integer/1) {area, counts} end) ``` ```elixir boxes = boxes |> Enum.map(fn <<_::binary-3>> <> rest -> rest |> String.to_charlist() |> Enum.count(&(&1 == ?#)) end) ``` ## Part 1 ```elixir areas |> Enum.count(fn {max, counts} -> counts |> Enum.zip_with(boxes, &*/2) |> Enum.sum() |> then(& &1 <= max) end) ``` ## Part 2 FIN