Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Day 1

2022/day_01.livemd

Day 1

Common

defmodule Day1 do
  def parse_input(raw_input) do
    raw_input
    |> String.split("\n\n", trim: true)
    |> Enum.map(fn group ->
      group
      |> String.split("\n", trim: true)
      |> Enum.map(&String.to_integer/1)
    end)
  end
end

Input

Mix.install([{:kino, github: "livebook-dev/kino"}])
textarea = Kino.Input.textarea("Input:")
raw_input = Kino.Input.read(textarea)
input = Day1.parse_input(raw_input)

Part 1

defmodule Day1.Part1 do
  def run(input) do
    input
    |> Enum.map(&Enum.sum/1)
    |> Enum.max()
  end
end
Day1.Part1.run(input)

Part 2

defmodule Day1.Part2 do
  def run(input) do
    input
    |> Enum.map(&Enum.sum/1)
    |> Enum.sort(:desc)
    |> Enum.take(3)
    |> Enum.sum()
  end
end
Day1.Part2.run(input)