diff --git a/15/o.py b/15/o.py new file mode 100644 index 0000000..4b63982 --- /dev/null +++ b/15/o.py @@ -0,0 +1,67 @@ +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))