Skip to content

Instantly share code, notes, and snippets.

@SebbyLaw
Created December 5, 2020 05:37
Show Gist options
  • Save SebbyLaw/ef46bf6b223a3966968079d8af28b674 to your computer and use it in GitHub Desktop.
Save SebbyLaw/ef46bf6b223a3966968079d8af28b674 to your computer and use it in GitHub Desktop.
AOC 2020 day 5
with open('input.txt') as f:
raw = f.read()
def row(code, lower=0, upper=127):
if len(code) == 3: return lower
if code[0] == 'F':
return row(code[1:], lower, (lower + upper) // 2)
if code[0] == 'B':
return row(code[1:], (lower + upper) // 2 + 1, upper)
def column(code, lower=0, upper=7):
if len(code) > 3:
return column(code[-3:], lower, upper)
if not code:
return lower
if code[0] == 'L':
return column(code[1:], lower, (lower + upper) // 2)
if code[0] == 'R':
return column(code[1:], (lower + upper) // 2 + 1, upper)
def seat_id(code):
r = row(code)
c = column(code)
return r * 8 + c
all_seats = {seat_id(i) for i in raw.split()}
print('part one: ', max(all_seats))
for i in range(min(all_seats), max(all_seats)):
try:
all_seats.remove(i)
except KeyError:
print('your seat: ', i)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment