aoc2024/day03.livemd

766 B

Day03

Mix.install([
  {:kino, "~> 0.14.2"},
])

Run Me

Run in Livebook

Input

input = Kino.Input.textarea("Input")

Part One

defmodule PartOne do
  def run(input) do
    Regex.scan(~r/mul\((\d+),(\d+)\)/, input)
    |> Enum.map(fn [_, a, b] -> String.to_integer(a) * String.to_integer(b) end)
    |> Enum.sum  
  end
end

input
|> Kino.Input.read
|> PartOne.run

Part Two

input
|> Kino.Input.read
|> String.split("do()")
|> Enum.map(fn s -> s |> String.split("don't()") |> hd end)
|> Enum.map(&PartOne.run/1)
|> List.flatten
|> Enum.sum