2026-rff_mp/shekurovaa/2/docs/data/solver.py
2026-05-20 20:55:28 +03:00

38 lines
977 B
Python

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
)