Day 6
Mix.install([{:kino, "~>0.7.0"}])
Setup
input = Kino.Input.textarea("File content")
Common
defmodule Day6 do
def find_start_of_message(input, start_of_package_marker \\ 4) do
input
|> String.split("", trim: true)
|> Enum.chunk_every(start_of_package_marker, 1, :discard)
|> Enum.map(fn letters ->
uniq = MapSet.to_list(MapSet.new(letters))
length(uniq) === length(letters)
end)
|> Enum.find_index(fn val -> val end)
|> then(&(&1 + start_of_package_marker))
end
end
Part 1
input
|> Kino.Input.read()
|> Day6.find_start_of_message()
Part 2
input
|> Kino.Input.read()
|> Day6.find_start_of_message(14)