4 этап
This commit is contained in:
parent
04e7b32684
commit
23012e3e84
|
|
@ -280,3 +280,44 @@ class DijkstraStrategy(PathFindingStrategy):
|
||||||
visited.add(neighbor)
|
visited.add(neighbor)
|
||||||
|
|
||||||
return [], len(visited)
|
return [], len(visited)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class MazeSolver:
|
||||||
|
"""решатель лабиринта - оркестратор, использующий стратегию"""
|
||||||
|
|
||||||
|
def __init__(self, maze):
|
||||||
|
self.maze = maze
|
||||||
|
self._strategy = None
|
||||||
|
|
||||||
|
def setStrategy(self, strategy):
|
||||||
|
"""динамическая смена стратегии поиска"""
|
||||||
|
self._strategy = strategy
|
||||||
|
print(f" Стратегия изменена на: {strategy.get_name()}")
|
||||||
|
|
||||||
|
def solve(self):
|
||||||
|
"""
|
||||||
|
решение лабиринта с использованием текущей стратегии.
|
||||||
|
возвращает SearchStats (время, посещённые клетки, длина пути)
|
||||||
|
"""
|
||||||
|
if self._strategy is None:
|
||||||
|
raise ValueError("Стратегия не установлена. Используйте setStrategy()")
|
||||||
|
|
||||||
|
|
||||||
|
start_time = time.perf_counter()
|
||||||
|
|
||||||
|
|
||||||
|
path, visited = self._strategy.findPath(self.maze, self.maze.start, self.maze.exit)
|
||||||
|
|
||||||
|
|
||||||
|
end_time = time.perf_counter()
|
||||||
|
time_ms = (end_time - start_time) * 1000
|
||||||
|
|
||||||
|
|
||||||
|
stats = SearchStats(
|
||||||
|
time_ms=time_ms,
|
||||||
|
visited_cells=visited,
|
||||||
|
path_length=len(path) if path else 0
|
||||||
|
)
|
||||||
|
|
||||||
|
return path, stats
|
||||||
Loading…
Reference in New Issue
Block a user