--- /dev/null
+#!/usr/bin/python3
+
+def get_row(binary_id):
+ choices=binary_id[:7]
+
+ selections=[a for a in range(128)]
+
+ for decision in choices:
+ half_range=int(len(selections)/2)
+ if decision == 'F':
+ del selections[-half_range:]
+ elif decision == 'B':
+ del selections[:half_range]
+
+ return selections[0]
+
+def get_col(binary_id):
+ choices=binary_id[-3:]
+
+ selections=[a for a in range(8)]
+
+ for decision in choices:
+ half_range=int(len(selections)/2)
+ if decision == 'L':
+ del selections[-half_range:]
+ elif decision == 'R':
+ del selections[:half_range]
+
+ return selections[0]
+
+def get_seat(binary_id):
+ row=get_row(binary_id)
+ col=get_col(binary_id)
+
+ return ((row,col))
+
+def get_seat_id(row, col):
+ return ((row * 8) + col)
+
+all_seat_ids=[]
+
+for line in open("input.txt", "r"):
+ line = line.rstrip()
+
+ (row, col) = get_seat(line)
+ all_seat_ids.append(get_seat_id(row, col))
+
+# sort the list
+all_seat_ids.sort()
+
+# and print the highest seat id - part 1
+print("Highest seat id: {}".format(all_seat_ids[-1]))
+
+
+# part 2
+my_seat_id=None
+
+for a,b in enumerate(all_seat_ids, start=all_seat_ids[0]):
+ if a != b:
+ my_seat_id=a
+ break
+
+print("My seat id: {}".format(my_seat_id))