Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

🎄 Year 2024 🔔 Day 01

elixir/notebooks/2024/day01.livemd

🎄 Year 2024 🔔 Day 01

Setup

input =
  File.read!("#{__DIR__}/../../../inputs/2024/day01.txt")
  |> String.split("\n", trim: true)
  |> Enum.map(fn <> ->
    [String.to_integer(a), String.to_integer(b)]
  end)
  |> List.zip()
  |> Enum.map(&amp;Tuple.to_list/1)
  |> Enum.map(&amp;Enum.sort/1)

Part 1

input
|> List.zip()
|> Enum.map(fn {a, b} -> max(a, b) - min(a, b) end)
|> Enum.sum()

Part 2

input
|> then(fn [a, b] ->
  Enum.map(a, fn ae ->
    matching_count = Enum.filter(b, fn ab -> ae == ab end) |> Enum.count()
    ae * matching_count
  end)
end)
|> Enum.sum()