import time from source.strategy.strategy import PathFindingStrategy from source.observer.observer import Observer, Event from source.classes.cell import Cell from source.classes.maze import Maze class MazeSolver: def __init__(self, maze: Maze, strategy: PathFindingStrategy, observer: Observer): self.maze = maze self.strategy = strategy self.observer = observer def strategyName(self): return self.strategy.name def setStrategy(self, strategy: PathFindingStrategy): self.strategy = strategy def solve(self): start_time = time.perf_counter() path, visited_cells = self.strategy.findPath(self.maze) finish_time = time.perf_counter() self.observer.update(Event( event="path_found", maze=self.maze, player_position=self.maze.exit, path=path )) return SearchStats( timeMs=finish_time - start_time, visitedCells=visited_cells, pathLength=len(path), path=path ) class SearchStats: """Общая информация о тесте алгоритма""" def __init__(self, timeMs: float, visitedCells: int, pathLength: int, path: list[Cell]): self.timeMs = timeMs self.visitedCells = visitedCells self.pathLength = pathLength self.path = path