Powered by AppSignal & Oban Pro

Day 6

advent_of_code/2022/day-06.livemd

Day 6

Day 6: Tuning Trouble

Day 6: Tuning Trouble

Input

input = 'mjqjpqmgbljsphdztnvjfqwrcgsmlb'

Part 1

defmodule Awesome do
  def solve([{head, _} | tail]) do
    list = Enum.take(tail, 3)

    list
    |> Enum.map(fn {a, _} -> a end)
    |> Kernel.++([head])
    |> Enum.uniq()
    |> Enum.count()
    |> Kernel.>=(4)
    |> if(do: list |> Enum.at(-1) |> elem(1), else: solve(tail))
  end
end

input |> Enum.with_index(1) |> Awesome.solve()

Part 2

defmodule Awesome2 do
  def solve([{head, _} | tail]) do
    list = Enum.take(tail, 13)

    list
    |> Enum.map(fn {a, _} -> a end)
    |> Kernel.++([head])
    |> Enum.uniq()
    |> Enum.count()
    |> Kernel.>=(14)
    |> if(do: list |> Enum.at(-1) |> elem(1), else: solve(tail))
  end
end

input |> Enum.with_index(1) |> Awesome2.solve()