Day 06
Mix.install([:kino_aoc])
Setup
{:ok, puzzle_input} =
KinoAOC.download_puzzle("2025", "6", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION"))
{tasks, [ops]} =
puzzle_input
|> String.split("\n", trim: true)
|> Enum.split(-1)
ops =
ops
|> String.split()
|> Enum.map(&String.to_atom/1)
Part 1
tasks
|> Enum.map(&String.split/1)
|> Enum.zip_with(fn numbers -> Enum.map(numbers, &String.to_integer/1) end)
|> Enum.zip(ops)
|> Enum.sum_by(fn
{nums, :+} -> Enum.sum(nums)
{nums, :*} -> Enum.product(nums)
end)
Part 2
tasks
|> Enum.map(&String.to_charlist/1)
|> Enum.zip_with(&(&1 |> List.to_string() |> String.trim()))
|> Enum.chunk_while(
[],
fn
"", acc -> {:cont, acc, []}
num, acc -> {:cont, [String.to_integer(num) | acc]}
end,
&{:cont, &1, []}
)
|> Enum.zip(ops)
|> Enum.sum_by(fn
{nums, :+} -> Enum.sum(nums)
{nums, :*} -> Enum.product(nums)
end)