From 031b48653f4d0c2f4bfeb47fea8a9d8037c83f90 Mon Sep 17 00:00:00 2001 From: volkovva Date: Mon, 25 May 2026 04:06:25 +0300 Subject: [PATCH] =?UTF-8?q?=20=D0=B1=D0=B5=D1=82=D0=B0-=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=20=D1=8D=D1=82=D0=B0=D0=BF=D0=B0=20MazeSolver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- VolkovVA/cod.py | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/VolkovVA/cod.py b/VolkovVA/cod.py index 99a78b7..e796ed3 100644 --- a/VolkovVA/cod.py +++ b/VolkovVA/cod.py @@ -61,11 +61,8 @@ class MazeBuilder: raise ValueError("Лабиринт сломан") return maze - - class PathFindingStrategy: def findPath(self, maze, start, exit): - raise NotImplementedError("Этот метод должен быть реализован в стратегии!") def _reconstruct_path(self, parents, current): @@ -75,8 +72,6 @@ class PathFindingStrategy: current = parents.get(current) return path[::-1] - - class BFSStrategy(PathFindingStrategy): def findPath(self, maze, start, exit): queue = deque([start]) @@ -126,4 +121,32 @@ class SearchStats: class MazeSolver: def __init__(self, maze): self.maze = maze - self.strat = None \ No newline at end of file + self.strat = None + + def setStrategy(self, strategy): + self.strat = strategy + + def solve(self): + if not self.strat: + return None + + t0 = time.perf_counter() + path = self.strat.findPath(self.maze, self.maze.start_cell, self.maze.exit_cell) + t1 = time.perf_counter() + + # Считаем посещенные ячейки + visited_count = sum(c.visited for row in self.maze.cells for c in row) + + return SearchStats((t1 - t0) * 1000, visited_count, len(path)) + +if __name__ == "__main__": + builder = MazeBuilder() + try: + path = r"C:\Users\vva26\2026-rff_mp\VolkovVA\docs\data\maze.txt" + maze = builder.buildFromFile(path) + solver = MazeSolver(maze) + solver.setStrategy(BFSStrategy()) + stats = solver.solve() + print(f"BFS: {stats.time_ms:.2f}мс, посещено: {stats.visited}, путь: {stats.length}") + except Exception as e: + print(f"Ошибка: {e}") \ No newline at end of file