diff --git a/day01.livemd b/day01.livemd new file mode 100644 index 0000000..793195b --- /dev/null +++ b/day01.livemd @@ -0,0 +1,43 @@ +# Day01 + +```elixir +Mix.install([ + {:kino, "~> 0.14.2"}, + {:decimal, "~> 2.2"} +]) +``` + +## Section + +```elixir +input = Kino.Input.textarea("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) +``` + +```elixir +input +|> Enum.map(&Enum.sort/1) +|> Enum.zip +|> Enum.map(fn {x,y} -> abs(x - y) end) +|> Enum.sum +``` + +```elixir +[x, y] = input + +f = Enum.frequencies(y) + +x +|> Enum.map(fn xx -> xx * (f[xx] || 0) end) +|> Enum.sum +```