AoC 2022 - day 06
Mix.install([:kino])
Section
input = Kino.Input.textarea("input")
defmodule Day01 do
def solve1(input) do
input
|> find_message_start(0, 4)
end
def solve2(input) do
input
|> find_message_start(0, 14)
end
defp find_message_start("", pos, _), do: pos
defp find_message_start(<>, pos, target) do
case parse_start(MapSet.new([a]), rest, target) do
true -> pos + target
false -> find_message_start(rest, pos + 1, target)
end
end
defp parse_start(_, _, 1), do: true
defp parse_start(set, <>, target) do
case MapSet.member?(set, b) do
true -> false
false -> parse_start(MapSet.put(set, b), rest, target - 1)
end
end
end
Kino.Input.read(input) |> Day01.solve1()
Kino.Input.read(input) |> Day01.solve2()