diff --git a/SmirnovaVYu/docs/data/solver.py b/SmirnovaVYu/docs/data/solver.py deleted file mode 100644 index 137e481..0000000 --- a/SmirnovaVYu/docs/data/solver.py +++ /dev/null @@ -1,49 +0,0 @@ -import time -from dataclasses import dataclass -from typing import List, Optional, Tuple -from models import Cell, Maze -from strategies import PathFindingStrategy - - -@dataclass -class SearchStats: - time_ms: float - visited_cells: int - path_length: int - path_found: bool = True - - def __str__(self) -> str: - if not self.path_found: - return f"Путь не найден (время: {self.time_ms:.2f} мс)" - return (f"Время: {self.time_ms:.2f} мс, " - f"Посещено клеток: {self.visited_cells}, " - f"Длина пути: {self.path_length}") - - -class MazeSolver: - - def __init__(self, maze: Maze, strategy: Optional[PathFindingStrategy] = None): - self.maze = maze - self._strategy = strategy - - def set_strategy(self, strategy: PathFindingStrategy) -> None: - self._strategy = strategy - - def solve(self) -> Tuple[List[Cell], SearchStats]: - if self._strategy is None: - raise ValueError("Стратегия не установлена") - - start_time = time.perf_counter() - path = self._strategy.find_path(self.maze, self.maze.start, self.maze.exit) - end_time = time.perf_counter() - - time_ms = (end_time - start_time) * 1000 - - stats = SearchStats( - time_ms=time_ms, - visited_cells=len(path) if path else 0, - path_length=len(path) if path else 0, - path_found=bool(path) - ) - - return path, stats \ No newline at end of file