lines = open("input.txt", "r").read().splitlines() def parse_lines(lines: list) -> (set, set): sensors = [] beacons = [] for line in lines: _, _, sx, sy, _, _, _, _, bx, by = line.split(" ") sensors.append([int(sx.split("=")[1][:-1]), int(sy.split("=")[1][:-1])]) beacons.append([int(bx.split("=")[1][:-1]), int(by.split("=")[1])]) return sensors, beacons def manhatten(a, b): return abs(a[0] - b[0]) + abs(a[1] - b[1]) critical = 2000000 sensors, beacons = parse_lines(lines) taken = set() critical_beacons = set(tuple(x) for x in beacons if x[1] == critical) print(critical_beacons) for i in range(len(sensors)): print(i) s = sensors[i] b = beacons[i] d = manhatten(s, b) min_y, max_y = s[1] - d, s[1] + d if min_y <= critical <= max_y: critical_d = abs(s[1] - critical) critical_reach = d - critical_d taken.update( (x, critical) for x in range(s[0] - critical_reach, s[0] + critical_reach + 1) ) print(len(taken) - len(critical_beacons))