defmodule BinaryBoarding do
  def parse(input) do
    input
    |> String.replace(~r/[F|L]/, "0")
    |> String.replace(~r/[B|R]/, "1")
    |> String.split_at(7)
    |> Tuple.to_list()
    |> Enum.map(&String.to_integer(&1, 2))
  end

  def calc_id([row, column]) do
    row * 8 + column
  end
end

boarding_passes =
  File.read!("input")
  |> String.split("\n", trim: true)
  |> Enum.map(&BinaryBoarding.parse/1)

seats =
  boarding_passes
  |> Enum.map(&BinaryBoarding.calc_id/1)

seats |> Enum.max() |> IO.inspect(label: "Part 1")

for id <- 0..1023,
    Enum.member?(seats, id) == false,
    (Enum.member?(seats, id - 1) && Enum.member?(seats, id + 1)) == true do
  IO.inspect(id, label: "Part 2")
end