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