day 5


5a.py goes through the list of seats, converts them to binary strings (from the description, F/L is a 0 and B/R is a 1), converts these to an int, and then saves this ID if it is larger than the largest seat ID found so far

# 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"
# F/L lower half, B/R upper half
# What is the highest seat ID on a boarding pass?
# input
with open('5.txt', 'r') as file:
    input = file.read()
# turn the input into a list; each row is a string FBFBBFFRLR
input_list = list(input.split('\n'))
# find largest
big_num = 0 # highest seat ID so far
for seat in input_list:
    # convert to a binary string
    seat_bin = ''
    for i in range(0,len(seat)):
        if seat[i] in ('F', 'L'):
            seat_bin = seat_bin + '0'
        elif seat[i] in ('B', 'R'):
            seat_bin = seat_bin + '1'
    # convert this to an int
    num = int(seat_bin, 2)
    # keep iff it is larger than all ones so far
    if num > big_num:
        big_num = num
print(big_num)

5b.py goes through the list of seats, converts them to binary strings (from the description, F/L is a 0 and B/R is a 1), converts these to an int, and then adds this ID to a list of seat IDs. it then sorts this list (the code ran quickly enough that i figured just using the inbuilt .sort() function is fine), checks for consecutive pairs of seats with a difference of 2, and then returns the seat number that would be between these two.

# input
with open('5.txt', 'r') as file:    input = file.read()
# turn the input into a list; each row is a string FBFBBFFRLR
input_list = list(input.split('\n'))
# get a list of all seat IDs
seats = []
for seat_str in input_list:
    # convert to a binary string
    seat_bin = ''
    for i in range(0,len(seat_str)):
        if seat_str[i] in ('F', 'L'):
            seat_bin = seat_bin + '0'
        elif seat_str[i] in ('B', 'R'):
            seat_bin = seat_bin + '1'
    # convert this to an int
    seat = int(seat_bin, 2)
    # add to list of seats
    seats.append(seat)
# sort list
seats.sort()
# find two consecutive seats with a difference of 2
for i in range(0, len(seats)):
    if seats[i+1] - seats[i] == 2:
        print(seats[i] + 1)
        break # found the answer

Files

5.txt 9.9 kB
Dec 05, 2020
5a.py 933 bytes
Dec 05, 2020
5b.py 1 kB
Dec 05, 2020

Get aoc 2020

Leave a comment

Log in with itch.io to leave a comment.