day6, part1 being painfully slow

This commit is contained in:
Stefan Harmuth 2022-08-14 13:23:57 +02:00
parent a5d1167aec
commit dbbf97c64d
4 changed files with 142 additions and 0 deletions

View File

@ -51,5 +51,17 @@
"wrong": [],
"correct": 4996
}
},
"6": {
"1": {
"wrong": [
4787
],
"correct": 4771
},
"2": {
"wrong": [],
"correct": 39149
}
}
}

74
day06.py Normal file
View File

@ -0,0 +1,74 @@
from tools.aoc import AOCDay
from tools.coordinate import Coordinate, DistanceAlgorithm
from tools.grid import Grid
from typing import Any, List
def fill_space(grid: Grid, coords: List[Coordinate], distance: int, sizecounter: List[int]) -> int:
filled = 0
for i, c in enumerate(coords):
for t in c.getCircle(distance, False, *grid.getBoundaries()):
if grid.get(t) == '.':
for tc in coords:
if tc != c and t.getDistanceTo(tc, DistanceAlgorithm.MANHATTAN, False) == distance:
grid.set(t, False)
break
else:
grid.set(t, i)
sizecounter[i] += 1
filled += 1
return filled
class Day(AOCDay):
inputs = [
[
(17, "test_input6_1"),
(4771, "input6")
],
[
(39149, "input6")
]
]
def get_input_coordinates(self) -> List[Coordinate]:
return [Coordinate(x, y) for x, y in self.getInputAsArraySplit(", ", return_type=int)]
def part1(self) -> Any:
coords = self.get_input_coordinates()
grid = Grid(".")
for i, c in enumerate(coords):
grid.set(c, i)
size_counter = [0] * len(coords)
fill_dist = 1
while fill_space(grid, coords, fill_dist, size_counter) > 0:
fill_dist += 1
return max(size_counter) + 1
def part2(self) -> Any:
coords = self.get_input_coordinates()
grid = Grid()
for c in coords:
grid.toggle(c)
region_size = 0
for x in range(grid.minX, grid.maxX + 1):
for y in range(grid.minY, grid.maxY + 1):
this_dist_sum = 0
for c in coords:
this_dist_sum += Coordinate(x, y).getDistanceTo(c, DistanceAlgorithm.MANHATTAN, False)
if this_dist_sum >= 10_000:
break
else:
region_size += 1
return region_size
if __name__ == '__main__':
day = Day(2018, 6)
day.run(verbose=True)

50
inputs/input6 Normal file
View File

@ -0,0 +1,50 @@
260, 78
42, 40
87, 276
219, 124
166, 137
341, 138
82, 121
114, 174
218, 289
61, 358
328, 164
279, 50
218, 107
273, 320
192, 349
354, 103
214, 175
128, 196
237, 67
333, 150
98, 260
166, 217
92, 212
55, 165
205, 138
321, 199
285, 148
217, 130
357, 319
160, 67
63, 75
345, 123
316, 220
41, 253
240, 245
201, 124
336, 166
95, 301
55, 181
219, 315
209, 237
317, 254
314, 300
242, 295
295, 293
285, 263
330, 204
112, 106
348, 49
81, 185

6
inputs/test_input6_1 Normal file
View File

@ -0,0 +1,6 @@
1, 1
1, 6
8, 3
3, 4
5, 5
8, 9