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

Day 1

day01.livemd

Day 1

Helpers

defmodule Helpers do
  def data() do
    "data/day01.txt"
    |> File.stream!()
    |> Stream.map(&String.trim/1)
  end

  def filter_increasing(values) do
    values
    |> Stream.chunk_every(2, 1, :discard)
    |> Stream.filter(fn [a, b] -> b > a end)
  end

  def sliding_window(values, window_size) do
    values
    |> Stream.chunk_every(window_size, 1, :discard)
    |> Stream.map(&Enum.sum/1)
  end
end

Part 1

import Helpers

data()
|> Stream.map(&String.to_integer/1)
|> filter_increasing()
|> Enum.count()

Part 2

import Helpers

data()
|> Stream.map(&String.to_integer/1)
|> sliding_window(3)
|> filter_increasing()
|> Enum.count()