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

Day 1

day_1.livemd

Day 1

Setup

Mix.install([
  {:kino, "0.4.1"}
])
input = Kino.Input.textarea("Input")
input =
  input
  |> Kino.Input.read()
  |> String.split("\n", trim: true)
  |> Enum.map(&String.to_integer/1)

Part 1

defmodule Depth do
  def counter([_ | []], count), do: count

  def counter(input, count) do
    [head | tail] = input
    next = Enum.at(tail, 0)

    cond do
      head < next -> counter(tail, count + 1)
      head >= next -> counter(tail, count)
    end
  end
end

Depth.counter(input, 0)

Part 2

input
|> Enum.chunk_every(3, 1, :discard)
|> Enum.map(&amp;Enum.sum/1)
|> Depth.counter(0)