Powered by AppSignal & Oban Pro

Aoc 2022 - Day 1

2022/elixir/day-1.livemd

Aoc 2022 - Day 1

Mix.install([
  {:kino, "~> 0.7.0"}
])

Section

input = Kino.Input.textarea("")
input
|> Kino.Input.read()
|> String.split("\n")
|> Enum.chunk_while(
  [],
  fn elem, acc ->
    if elem == "" do
      {:cont, Enum.reverse(acc), []}
    else
      {:cont, [elem | acc]}
    end
  end,
  fn
    [] -> {:cont, []}
    acc -> {:cont, Enum.reverse(acc), []}
  end
)
|> Enum.map(&Enum.reduce(&1, 0, fn s, acc -> String.to_integer(s) + acc end))
|> Enum.sort(:desc)
|> Enum.take(3)
|> Enum.sum()