Added 2018 day 6 part 2
This commit is contained in:
@ -19,7 +19,6 @@ class Point:
|
||||
self.coords = (x, y)
|
||||
self.isInfinite = False
|
||||
|
||||
|
||||
def getDistance(self, x, y):
|
||||
return abs(self.x - x) + abs(self.y - y)
|
||||
|
||||
@ -75,11 +74,41 @@ def part1(vals):
|
||||
|
||||
return result
|
||||
|
||||
def part2(vals):
|
||||
pass
|
||||
class Location:
|
||||
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__":
|
||||
vals = readFile()
|
||||
#vals = [Point(1, 1), Point(1, 6), Point(8, 3), Point(3, 4), Point(5, 5), Point(8, 9)]
|
||||
vals, maxDist = readFile(), 10000
|
||||
#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 2: {part2(vals)}")
|
||||
print(f"Part 2: {part2(vals, maxDist)}")
|
Reference in New Issue
Block a user