Files
aoc2024-elixir/lib/aoc2024/day_01.ex
T

28 lines
576 B
Elixir

defmodule Aoc2024.Day01 do
def parse(input) do
Aoc2024.Utils.parse_rows_of_integers(input)
|> Enum.map(&List.to_tuple/1)
|> Enum.unzip()
end
def part1({col0, col1}) do
sorted_col0 = col0 |> Enum.sort()
sorted_col1 = col1 |> Enum.sort()
Enum.zip(sorted_col0, sorted_col1)
|> Enum.map(fn {val0, val1} ->
abs(val0 - val1)
end)
|> Enum.sum()
end
def part2({col0, col1}) do
col0
|> Enum.map(fn val0 ->
count = Enum.count(col1, fn val1 -> val0 == val1 end)
count * val0
end)
|> Enum.sum()
end
end