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

Day 6

day06.livemd

Day 6

Helpers

defmodule Helpers do
  def data() do
    "data/day06.txt"
    |> File.read!()
    |> String.trim()
    |> String.split(",")
    |> Enum.map(&String.to_integer/1)
  end

  def step(age_counts) do
    {spawners, age_counts} = Map.pop(age_counts, 0, 0)

    age_counts
    |> Enum.map(fn
      {age, count} -> {age - 1, count}
    end)
    |> Enum.into(%{})
    |> Map.merge(%{6 => spawners, 8 => spawners}, fn _k, v1, v2 -> v1 + v2 end)
  end
end

Part 1

import Helpers

data()
|> Enum.frequencies()
|> Stream.iterate(&step/1)
|> Enum.at(80)
|> Map.values()
|> Enum.sum()

Part 2

import Helpers

data()
|> Enum.frequencies()
|> Stream.iterate(&step/1)
|> Enum.at(256)
|> Map.values()
|> Enum.sum()