diff --git a/2024/day01.livemd b/2024/day01.livemd new file mode 100644 index 0000000..c30e2ba --- /dev/null +++ b/2024/day01.livemd @@ -0,0 +1,49 @@ +# Day 01 + +```elixir +Mix.install([:kino_aoc]) +``` + +## Section + + + +```elixir +{:ok, puzzle_input} = + KinoAOC.download_puzzle("2024", "1", System.fetch_env!("LB_ADVENT_OF_CODE_SESSION")) +``` + +```elixir +{left, right} = +puzzle_input +|> String.split("\n", trim: true) +|> Enum.map(fn line -> + line + |> String.split(" ", trim: true) + |> Enum.map(&String.to_integer/1) + |> List.to_tuple() +end) +|> Enum.unzip() +``` + +## Part 1 + +```elixir +left +|> Enum.sort() + |> Enum.zip_with(Enum.sort(right), &abs(&1 - &2)) +|> Enum.sum() +``` + +## Part 2 + +```elixir +freq_left = Enum.frequencies(left) +freq_right = Enum.frequencies(right) + +freq_left +|> Enum.map(fn {id, n} -> id * n * Map.get(freq_right, id, 0) end) +|> Enum.sum() +``` + +