From 9f5a0055f3aae37255e46fff762413c1acae4f79 Mon Sep 17 00:00:00 2001 From: tseremonnikovaaa Date: Sun, 24 May 2026 20:10:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=80=D0=BA=D0=B5=D1=81=D1=82=D1=80?= =?UTF-8?q?=D0=B0=D1=82=D0=BE=D1=80=20MazeSolver=20=D0=B8=20=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=82=D0=B8=D1=81=D1=82=D0=B8=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tseremonnikovaaa/lab2/docs/data/main2.py | 32 +++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tseremonnikovaaa/lab2/docs/data/main2.py b/tseremonnikovaaa/lab2/docs/data/main2.py index 4cc5f6c..792c32c 100644 --- a/tseremonnikovaaa/lab2/docs/data/main2.py +++ b/tseremonnikovaaa/lab2/docs/data/main2.py @@ -179,4 +179,34 @@ class AStarStrategy(PathFindingStrategy): f = tentative_g + self.heuristic(nb, exit) heapq.heappush(open_set, (f, counter, nb)) counter += 1 - return [], len(visited) \ No newline at end of file + return [], len(visited) + +@dataclass +class SearchStats: + time_ms: float + visited_cells: int + path_length: int + algorithm: str + + +class MazeSolver: + def __init__(self, maze, strategy): + self.maze = maze + self.strategy = strategy + + def set_strategy(self, strategy): + self.strategy = strategy + + def solve(self): + if self.maze.start is None or self.maze.exit is None: + raise ValueError("Лабиринт не имеет старта или выхода") + start_time = time.perf_counter() + path, visited = self.strategy.find_path(self.maze, self.maze.start, self.maze.exit) + end_time = time.perf_counter() + stats = SearchStats( + time_ms=(end_time - start_time) * 1000, + visited_cells=visited, + path_length=len(path), + algorithm=self.strategy.__class__.__name__ + ) + return path, stats