2026-rff_mp/volkovim/task2/solver/maze_solver.py

73 lines
1.2 KiB
Python
Raw Normal View History

2026-05-24 18:48:59 +00:00
import time
from solver.search_stats import SearchStats
class MazeSolver:
def __init__(
self,
maze,
strategy
):
self.maze = maze
self.strategy = strategy
self.observers = []
def addObserver(
self,
observer
):
self.observers.append(
observer
)
def notify(
self,
event
):
for observer in self.observers:
observer.update(event)
def setStrategy(
self,
strategy
):
self.strategy = strategy
def solve(self):
self.notify(
"search_started"
)
start_time = time.perf_counter()
path, visited_cells = (
self.strategy.findPath(
self.maze,
self.maze.start,
self.maze.exit
)
)
finish_time = (
time.perf_counter()
)
elapsed_ms = (
finish_time
- start_time
) * 1000
stats = SearchStats(
elapsed_ms,
visited_cells,
len(path)
)
self.notify(
"search_finished"
)
return path, stats