From 098ccd7af13857e6c568524c5c365011d95731a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=20=D0=9C=D0=B0?= =?UTF-8?q?=D1=82=D0=B2=D0=B5=D0=B9?= Date: Thu, 21 May 2026 00:41:30 +0300 Subject: [PATCH] [2] MazeSolver --- BorisovMI/lab_2/docs/data/maze.py | 37 +++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/BorisovMI/lab_2/docs/data/maze.py b/BorisovMI/lab_2/docs/data/maze.py index b3173a7..abe4624 100644 --- a/BorisovMI/lab_2/docs/data/maze.py +++ b/BorisovMI/lab_2/docs/data/maze.py @@ -231,3 +231,40 @@ class AStrategy(PathFindingStrategy): return path +class SearchStats: + def __init__(self, time_ms=0, visited_cells=0, path_length=0): + self.time_ms = time_ms + self.visited_cells = visited_cells + self.path_length = path_length + + def __str__(self): + return f"Время: {self.time_ms:.3f} мс | Посещено: {self.visited_cells} | Длина пути: {self.path_length}" + + +class MazeSolver: + def __init__(self, maze): + self.maze = maze + self.strategy = None + + def setStrategy(self, strategy): + self.strategy = strategy + + def solve(self): + if self.strategy is None: + raise ValueError("Стратегия не установлена") + + + start_time = time.perf_counter() + path = self.strategy.findPath(self.maze, self.maze.start, self.maze.exit) + + end_time = time.perf_counter() + elapsed_ms = (end_time - start_time) * 1000 + + + stats = SearchStats( + time_ms=elapsed_ms, + visited_cells=len(path), + path_length=len(path) + ) + + return path, stats