Advent of Code 2024 - Day 1
Mix.install([
{:kino_aoc, "~> 0.1"},
])
Section
{:ok, puzzle_input} =
KinoAOC.download_puzzle("2024", "1", System.fetch_env!("LB_AOC_SESSON_2024"))
defmodule Day01 do
def parse(input) do
input
|> String.split("\n", trim: true)
|> Enum.map(fn line ->
[left, right] = String.split(line)
{String.to_integer(left), String.to_integer(right)}
end)
|> Enum.unzip()
end
def part1({left, right}) do
Enum.zip(Enum.sort(left), Enum.sort(right))
|> Enum.map(fn {a, b} -> abs(a - b) end)
|> Enum.sum()
end
def part2({left, right}) do
left
|> Enum.map(fn number ->
number * Enum.count(right, & &1 == number)
end)
|> Enum.sum()
end
end
Day01.parse(puzzle_input) |> Day01.part1()
Day01.parse(puzzle_input) |> Day01.part2()