From cf454dfc2236a3bf1f44cfd7ba46000ef9b2fe09 Mon Sep 17 00:00:00 2001 From: Caleb Webber Date: Mon, 2 Dec 2024 09:38:26 -0500 Subject: [PATCH] add 2024 day 1 livebook --- elixir/livebook/2024/day1.livemd | 43 ++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 elixir/livebook/2024/day1.livemd diff --git a/elixir/livebook/2024/day1.livemd b/elixir/livebook/2024/day1.livemd new file mode 100644 index 0000000..efc9f5f --- /dev/null +++ b/elixir/livebook/2024/day1.livemd @@ -0,0 +1,43 @@ +# AOC2024 Day 1 + +## Section + +```elixir +input = """ +3 4 +4 3 +2 5 +1 3 +3 9 +3 3 +""" +``` + +```elixir +{left, right} = for [a,b] <- input |> String.trim() +|> String.split("\n") +|> Enum.map(&(String.split(&1, " ") |> Enum.map(fn s -> String.to_integer(s) end))), + reduce: {[],[]} +do + {k,l} -> {[a|k],[b|l]} +end +``` + +```elixir +for {a, b} <- (left |> Enum.sort()) |> Enum.zip((right |> Enum.sort())), + reduce: 0 do + acc -> acc + abs(b - a) +end +``` + +```elixir +freq = right |> Enum.frequencies() +``` + +```elixir +for n <- left, + f = Map.get(freq, n, 0), + reduce: 0 do + acc -> acc + n*f +end +```