Powered by AppSignal & Oban Pro

Day 25: Let It Snow

elixir/day_25_let_it_snow.livemd

Day 25: Let It Snow

Section

defmodule CodeFinder do
  def find_code(3019, 3010, n, _iteration), do: n

  def find_code(x, y, n, iteration) when iteration <= 100_000_000 do
    n = rem(n * 252_533, 33_554_393)

    {x, y} =
      if y == 1 do
        {1, x + 1}
      else
        {x + 1, y - 1}
      end

    find_code(x, y, n, iteration + 1)
  end
end

CodeFinder.find_code(1, 1, 20_151_125, 1)
8997277