2026-rff_mp/nehoroshevaa/task2/solver/maze_solver.py
2026-05-24 21:49:38 +03:00

43 lines
1008 B
Python

import time
from observer.subject import Subject
from observer.maze_event import MazeEvent, MazeEventType
from models.search_stats import SearchStats
class MazeSolver(Subject):
def __init__(self, maze, strategy):
super().__init__()
self.maze = maze
self.strategy = strategy
def set_strategy(self, strategy):
self.strategy = strategy
def solve(self):
start_time = time.perf_counter()
path, visited = self.strategy.find_path(
self.maze,
self.maze.start_cell,
self.maze.exit_cell
)
end_time = time.perf_counter()
self.notify(
MazeEvent(
MazeEventType.PATH_FOUND,
path
)
)
return SearchStats(
strategy=self.strategy.__class__.__name__,
maze_name="maze",
duration=(end_time - start_time) * 1000,
visited_cells=visited,
path_length=len(path)
)