Advent 2024 - Day 3
Mix.install([
{:kino, "~> 0.14.2"}
])
Setup
input = Kino.Input.textarea("Please paste your input file")
instructions = input |> Kino.Input.read()
Part 1
validate = fn instructions ->
Regex.scan(~r/mul\((?\d*),(?\d*)\)/, instructions)
|> Enum.map(fn [_match, a, b] ->
String.to_integer(a) * String.to_integer(b)
end)
|> Enum.sum()
end
validate.(instructions)
Part 2
String.split("do()#{instructions}", "don't()")
|> Enum.map(fn instructions ->
[_ignore | rest] = String.split(instructions, "do()")
rest |> Enum.join()
end)
|> Enum.join()
|> then(fn instructions ->
validate.(instructions)
end)