import os input = open(os.path.dirname(__file__) + "/input-demo.txt", "r").readlines() beacons = [] sensors = [] distance = [] for line in input: l = line.strip().split() sx = int(l[2].split('=')[1].split(',')[0]) sy = int(l[3].split('=')[1].split(':')[0]) bx = int(l[8].split('=')[1].split(',')[0]) by = int(l[9].split('=')[1]) d = abs(bx-sx)+abs(by-sy) distance.append(d) beacons.append((bx, by)) sensors.append((sx, sy)) print(sx, sy, bx, by, d) def getcoverage(b, Y): coverage = set() (x, y) = sensors[b] d0 = distance[i] print("check", x, y, d0) for X in range(x-d0, x+d0): if (abs(x-X)+abs(y-Y)) <= d0: coverage.add((X, Y)) # for Y in range(y-d0, y+d0): #print(X, Y, abs(x-X)+abs(y-Y)) return coverage #testy = 2000000 testy = 10 fullcoverage = set() for i in range(len(sensors)): cov = getcoverage(i, testy) # print(cov) fullcoverage.update(cov) # print(fullcoverage) testset = set() for s in fullcoverage: if s[1] == testy: testset.add(s) nonbeacons = testset.difference(set(beacons)) # print(sorted(set(beacons))) # print(sorted(testset)) for b in beacons: if b[1] == testy: print(b[0]*4000000+b[1]) print(len(testset)) print(len(nonbeacons))