102 lines
4.3 KiB
Plaintext
102 lines
4.3 KiB
Plaintext
# Advent of Code
|
||
|
||
--- Day 5: Binary Boarding ---
|
||
|
||
You board your plane only to discover a new problem: you dropped your boarding pass! You
|
||
aren't sure which seat is yours, and all of the flight attendants are busy with the flood
|
||
of people that suddenly made it through passport control.
|
||
|
||
You write a quick program to use your phone's camera to scan all of the nearby boarding
|
||
passes (your puzzle input); perhaps you can find your seat through process of elimination.
|
||
|
||
Instead of zones or groups, this airline uses binary space partitioning to seat people. A
|
||
seat might be specified like FBFBBFFRLR, where F means "front", B means "back", L means
|
||
"left", and R means "right".
|
||
|
||
The first 7 characters will either be F or B; these specify exactly one of the 128 rows on
|
||
the plane (numbered 0 through 127). Each letter tells you which half of a region the given
|
||
seat is in. Start with the whole list of rows; the first letter indicates whether the seat
|
||
is in the front (0 through 63) or the back (64 through 127). The next letter indicates
|
||
which half of that region the seat is in, and so on until you're left with exactly one row.
|
||
|
||
For example, consider just the first seven characters of FBFBBFFRLR:
|
||
|
||
• Start by considering the whole range, rows 0 through 127.
|
||
• F means to take the lower half, keeping rows 0 through 63.
|
||
• B means to take the upper half, keeping rows 32 through 63.
|
||
• F means to take the lower half, keeping rows 32 through 47.
|
||
• B means to take the upper half, keeping rows 40 through 47.
|
||
• B keeps rows 44 through 47.
|
||
• F keeps rows 44 through 45.
|
||
• The final F keeps the lower of the two, row 44.
|
||
|
||
The last three characters will be either L or R; these specify exactly one of the 8 columns
|
||
of seats on the plane (numbered 0 through 7). The same process as above proceeds again,
|
||
this time with only three steps. L means to keep the lower half, while R means to keep the
|
||
upper half.
|
||
|
||
For example, consider just the last 3 characters of FBFBBFFRLR:
|
||
|
||
• Start by considering the whole range, columns 0 through 7.
|
||
• R means to take the upper half, keeping columns 4 through 7.
|
||
• L means to take the lower half, keeping columns 4 through 5.
|
||
• The final R keeps the upper of the two, column 5.
|
||
|
||
So, decoding FBFBBFFRLR reveals that it is the seat at row 44, column 5.
|
||
|
||
Every seat also has a unique seat ID: multiply the row by 8, then add the column. In this
|
||
example, the seat has ID 44 * 8 + 5 = 357.
|
||
|
||
Here are some other boarding passes:
|
||
|
||
• BFFFBBFRRR: row 70, column 7, seat ID 567.
|
||
• FFFBBBFRRR: row 14, column 7, seat ID 119.
|
||
• BBFFBBFRLL: row 102, column 4, seat ID 820.
|
||
|
||
As a sanity check, look through your list of boarding passes. What is the highest seat ID
|
||
on a boarding pass?
|
||
|
||
Your puzzle answer was 991.
|
||
|
||
--- Part Two ---
|
||
|
||
Ding! The "fasten seat belt" signs have turned on. Time to find your seat.
|
||
|
||
It's a completely full flight, so your seat should be the only missing boarding pass in
|
||
your list. However, there's a catch: some of the seats at the very front and back of the
|
||
plane don't exist on this aircraft, so they'll be missing from your list as well.
|
||
|
||
Your seat wasn't at the very front or back, though; the seats with IDs +1 and -1 from yours
|
||
will be in your list.
|
||
|
||
What is the ID of your seat?
|
||
|
||
Your puzzle answer was 534.
|
||
|
||
Both parts of this puzzle are complete! They provide two gold stars: **
|
||
|
||
At this point, you should return to your Advent calendar and try another puzzle.
|
||
|
||
If you still want to see it, you can get your puzzle input.
|
||
|
||
References
|
||
|
||
Visible links
|
||
. https://adventofcode.com/
|
||
. https://adventofcode.com/2020/about
|
||
. https://adventofcode.com/2020/events
|
||
. https://adventofcode.com/2020/settings
|
||
. https://adventofcode.com/2020/auth/logout
|
||
. Advent of Code Supporter
|
||
https://adventofcode.com/2020/support
|
||
. https://adventofcode.com/2020
|
||
. https://adventofcode.com/2020
|
||
. https://adventofcode.com/2020/support
|
||
. https://adventofcode.com/2020/sponsors
|
||
. https://adventofcode.com/2020/leaderboard
|
||
. https://adventofcode.com/2020/stats
|
||
. https://adventofcode.com/2020/sponsors
|
||
. https://www.youtube.com/watch?v=oAHbLRjF0vo
|
||
. https://adventofcode.com/2020
|
||
. https://adventofcode.com/2020/day/5/input
|