Powered by AppSignal & Oban Pro

Day 6

2022/day_6.livemd

Day 6

Setup

Mix.install([:kino])
input =
  Kino.Input.text("Paste input here",
    default: "mjqjpqmgbljsphdztnvjfqwrcgsmlb"
  )
datastream = Kino.Input.read(input)

Part 1

marker_length = 4

datastream
|> String.splitter("", trim: true)
|> Stream.chunk_every(marker_length, 1)
|> Enum.find_index(&(MapSet.size(MapSet.new(&1)) === marker_length))
|> Kernel.+(marker_length)

Part 2

marker_length = 14

datastream
|> String.splitter("", trim: true)
|> Stream.chunk_every(marker_length, 1)
|> Enum.find_index(&(MapSet.size(MapSet.new(&1)) === marker_length))
|> Kernel.+(marker_length)