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()