day09: slightly optimized

This commit is contained in:
Stefan Harmuth 2021-12-09 06:33:46 +01:00
parent 08f93c574a
commit 83385d81e6

View File

@ -15,17 +15,9 @@ def getCaveMapFromInput(puzzle_input: List[str]) -> Grid:
def getLowPoints(caveMap: Grid) -> List[Coordinate]: def getLowPoints(caveMap: Grid) -> List[Coordinate]:
lowPoints = [] lowPoints = []
for x in range(caveMap.minX, caveMap.maxX + 1): for point in caveMap.getActiveCells():
for y in range(caveMap.minY, caveMap.maxY + 1): if not sum((caveMap.get(t) <= caveMap.get(point)) for t in point.getNeighbours(includeDiagonal=False)):
thisPoint = Coordinate(x, y) lowPoints.append(point)
lowest = True
for t in thisPoint.getNeighbours(includeDiagonal=False):
if caveMap.get(t) <= caveMap.get(Coordinate(x, y)):
lowest = False
if lowest:
lowPoints.append(thisPoint)
return lowPoints return lowPoints
@ -35,7 +27,7 @@ def getBasin(caveMap: Grid, start: Coordinate, visited: set) -> set:
if n in visited: if n in visited:
continue continue
if caveMap.get(n) != 9 and caveMap.get(n) != 99: if caveMap.get(n) < 9:
visited.add(n) visited.add(n)
visited = set.union(visited, getBasin(caveMap, n, visited)) visited = set.union(visited, getBasin(caveMap, n, visited))