Added 2018 day 6 part 2

This commit is contained in:
Akumatic
2019-11-18 23:27:59 +01:00
parent ca241487aa
commit ac7e2b27b5

View File

@ -19,7 +19,6 @@ class Point:
self.coords = (x, y) self.coords = (x, y)
self.isInfinite = False self.isInfinite = False
def getDistance(self, x, y): def getDistance(self, x, y):
return abs(self.x - x) + abs(self.y - y) return abs(self.x - x) + abs(self.y - y)
@ -75,11 +74,41 @@ def part1(vals):
return result return result
def part2(vals): class Location:
pass maxDist = 0
def __init__(self, x, y):
self.distance = 0
self.x = x
self.y = y
self.inRegion = True
def addDistance(self, point):
self.distance += point.getDistance(self.x, self.y)
if self.distance >= Location.maxDist:
self.inRegion = False
def part2(vals, maxDist):
x, y = [val.x for val in vals], [val.y for val in vals]
minx, maxx, miny, maxy = min(x), max(x), min(y), max(y)
Location.maxDist = maxDist
locations = []
for j in range(miny, maxy + 1):
for i in range(minx, maxx + 1):
loc = Location(i, j)
for point in vals:
loc.addDistance(point)
locations.append(loc)
count = 0
for loc in locations:
if loc.inRegion:
count += 1
return count
if __name__ == "__main__": if __name__ == "__main__":
vals = readFile() vals, maxDist = readFile(), 10000
#vals = [Point(1, 1), Point(1, 6), Point(8, 3), Point(3, 4), Point(5, 5), Point(8, 9)] #vals, maxDist = [Point(1, 1), Point(1, 6), Point(8, 3), Point(3, 4),
# Point(5, 5), Point(8, 9)], 32
print(f"Part 1: {part1(vals)}") print(f"Part 1: {part1(vals)}")
print(f"Part 2: {part2(vals)}") print(f"Part 2: {part2(vals, maxDist)}")