From f214201581b3b0c2f32c12c33ca7a6e99a68cbee Mon Sep 17 00:00:00 2001 From: Kevin Hughes Date: Sun, 1 Dec 2024 19:23:51 +0000 Subject: [PATCH] Day One --- day01.livemd | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 day01.livemd diff --git a/day01.livemd b/day01.livemd new file mode 100644 index 0000000..ddad0f0 --- /dev/null +++ b/day01.livemd @@ -0,0 +1,48 @@ +# Day01 + +```elixir +Mix.install([ + {:kino, "~> 0.14.2"}, + {:decimal, "~> 2.2"} +]) +``` + +## Input + +```elixir +input = Kino.Input.textarea("Input") +``` + +## Parse Input + +```elixir +input = + input + |> Kino.Input.read + |> String.split("\n") + |> Enum.map(fn l -> String.split(l, " ") end) + |> List.foldl([[],[]], fn [x, y], [xa, ya] -> + [[String.to_integer(x)| xa], [String.to_integer(y)| ya]] + end) +``` + +## Part One + +```elixir +input +|> Enum.map(&Enum.sort/1) +|> Enum.zip +|> Enum.map(fn {x,y} -> abs(x - y) end) +|> Enum.sum +``` + +## Part Two + +```elixir +[x, y] = input + +f = Enum.frequencies(y) + +Enum.map(xfn xx -> xx * (f[xx] || 0) end) +|> Enum.sum +```