Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Advent of Code 2020, day 5: Binary Boarding

aoc202005_binary_boarding.livemd

Advent of Code 2020, day 5: Binary Boarding

Setup

file_path = __DIR__ <> "/../../lib/2020/05_binary_boarding/input.txt"

Parse data

data =
  File.read!(file_path)
  |> String.replace("F", "0")
  |> String.replace("B", "1")
  |> String.replace("L", "0")
  |> String.replace("R", "1")
  |> String.split("\n", trim: true)
  |> Enum.map(&amp;String.to_integer(&amp;1, 2))

Part 1

part1 = Enum.max(data)

Part 2

all_seats = Enum.min(data)..Enum.max(data) |> MapSet.new()
tickets = data |> MapSet.new()

part2 = MapSet.difference(all_seats, tickets) |> MapSet.to_list() |> hd

Confirm final result

928 = part1
610 = part2
"🥳"