|
@ -30,9 +30,9 @@ class VolcanicVent: |
|
|
|
|
|
|
|
|
def __post_init__(self): |
|
|
def __post_init__(self): |
|
|
if self.start.x == self.end.x or self.start.y == self.end.y: |
|
|
if self.start.x == self.end.x or self.start.y == self.end.y: |
|
|
self.type = "vertical" if self.start.x == self.end.x else "horizontal" |
|
|
|
|
|
|
|
|
self.direction = "vertical" if self.start.x == self.end.x else "horizontal" |
|
|
else: |
|
|
else: |
|
|
self.type = "diagnal" |
|
|
|
|
|
|
|
|
self.direction = "diagnal" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Chart: |
|
|
class Chart: |
|
@ -60,17 +60,17 @@ class Chart: |
|
|
|
|
|
|
|
|
vents = self.vents.copy() |
|
|
vents = self.vents.copy() |
|
|
for vent in vents: |
|
|
for vent in vents: |
|
|
min_x = min(vent.start.x, vent.end.x) |
|
|
|
|
|
max_x = max(vent.start.x, vent.end.x) |
|
|
|
|
|
min_y = min(vent.start.y, vent.end.y) |
|
|
|
|
|
max_y = max(vent.start.y, vent.end.y) |
|
|
|
|
|
|
|
|
|
|
|
for x in range(min_x, max_x + 1): |
|
|
|
|
|
for y in range(min_y, max_y + 1): |
|
|
|
|
|
if vent.type != "diagnal": |
|
|
|
|
|
|
|
|
if vent.direction != "diagnal": |
|
|
|
|
|
min_x = min(vent.start.x, vent.end.x) |
|
|
|
|
|
max_x = max(vent.start.x, vent.end.x) |
|
|
|
|
|
min_y = min(vent.start.y, vent.end.y) |
|
|
|
|
|
max_y = max(vent.start.y, vent.end.y) |
|
|
|
|
|
|
|
|
|
|
|
for x in range(min_x, max_x + 1): |
|
|
|
|
|
for y in range(min_y, max_y + 1): |
|
|
self.diagram[x, y] += 1 |
|
|
self.diagram[x, y] += 1 |
|
|
else: |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
else: |
|
|
|
|
|
pass |
|
|
|
|
|
|
|
|
def calculate_overlaps(self, max_depth: int = 1) -> int: |
|
|
def calculate_overlaps(self, max_depth: int = 1) -> int: |
|
|
return sum(depth_count > max_depth for depth_count in self.diagram.values()) |
|
|
return sum(depth_count > max_depth for depth_count in self.diagram.values()) |
|
|