2026-rff_mp/shekurovaa/2/docs/data/solver.py

38 lines
977 B
Python
Raw Normal View History

2026-05-20 17:55:28 +00:00
import time
from dataclasses import dataclass
@dataclass
class SearchStats:
timeMs: float
visitedCells: int
pathLength: int
path: list
class MazeSolver:
def __init__(self, maze, strategy):
self.maze = maze
self.strategy = strategy
def setStrategy(self, strategy):
self.strategy = strategy
def solve(self) -> SearchStats:
if self.maze.start is None or self.maze.exit is None:
raise ValueError("Лабиринт должен содержать start и exit")
t0 = time.perf_counter()
result = self.strategy.findPath(self.maze, self.maze.start, self.maze.exit)
t1 = time.perf_counter()
if isinstance(result, tuple):
path, visited = result
else:
path, visited = result, 0
return SearchStats(
timeMs=(t1 - t0) * 1000,
visitedCells=visited,
pathLength=len(path),
path=path
)