From d576fe4a6bbb0208d7b3b8a605f4ff97dc16b148 Mon Sep 17 00:00:00 2001 From: sawa2caxap Date: Sun, 24 May 2026 19:39:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BolonkinNM/.idea/.gitignore | 3 - ...rchive.iml => maze_project_submission.iml} | 0 BolonkinNM/.idea/misc.xml | 2 +- BolonkinNM/.idea/modules.xml | 2 +- BolonkinNM/.idea/workspace.xml | 42 +++ BolonkinNM/README.md | 32 +- BolonkinNM/bst.py | 118 -------- BolonkinNM/builders/__init__.py | 0 BolonkinNM/builders/maze_builder.py | 7 + BolonkinNM/builders/text_file_maze_builder.py | 52 ++++ BolonkinNM/commands/__init__.py | 0 BolonkinNM/commands/command.py | 11 + BolonkinNM/commands/move_command.py | 37 +++ BolonkinNM/controller/__init__.py | 0 BolonkinNM/controller/game_controller.py | 30 ++ BolonkinNM/core/__init__.py | 0 BolonkinNM/core/cell.py | 26 ++ BolonkinNM/core/maze.py | 49 +++ BolonkinNM/core/player.py | 6 + BolonkinNM/core/search_stats.py | 11 + BolonkinNM/docs/README.txt | 1 + BolonkinNM/docs/data/delete.png | Bin 62586 -> 0 bytes BolonkinNM/docs/data/find.png | Bin 52399 -> 0 bytes BolonkinNM/docs/data/insert.png | Bin 49499 -> 0 bytes BolonkinNM/docs/data/results.csv | 109 ------- BolonkinNM/docs/report.md | 282 +++++++++++++----- BolonkinNM/experiment.py | 225 ++++++++++++++ .../experiment_results/empty_30x30_length.png | Bin 0 -> 24894 bytes .../experiment_results/empty_30x30_time.png | Bin 0 -> 18011 bytes .../empty_30x30_visited.png | Bin 0 -> 20209 bytes .../large_100x100_length.png | Bin 0 -> 25387 bytes .../experiment_results/large_100x100_time.png | Bin 0 -> 18843 bytes .../large_100x100_visited.png | Bin 0 -> 22421 bytes .../medium_50x50_length.png | Bin 0 -> 22216 bytes .../experiment_results/medium_50x50_time.png | Bin 0 -> 19918 bytes .../medium_50x50_visited.png | Bin 0 -> 25131 bytes .../no_path_30x30_length.png | Bin 0 -> 20521 bytes .../experiment_results/no_path_30x30_time.png | Bin 0 -> 19403 bytes .../no_path_30x30_visited.png | Bin 0 -> 19961 bytes BolonkinNM/experiment_results/raw.csv | 121 ++++++++ .../experiment_results/small_10x10_length.png | Bin 0 -> 17938 bytes .../experiment_results/small_10x10_time.png | Bin 0 -> 24362 bytes .../small_10x10_visited.png | Bin 0 -> 17961 bytes BolonkinNM/experiment_results/summary.csv | 25 ++ .../weighted_30x30_length.png | Bin 0 -> 21783 bytes .../weighted_30x30_time.png | Bin 0 -> 22928 bytes .../weighted_30x30_visited.png | Bin 0 -> 25496 bytes BolonkinNM/experiments.py | 172 ----------- BolonkinNM/hash_table.py | 44 --- BolonkinNM/linked_list.py | 73 ----- BolonkinNM/main.py | 62 +++- BolonkinNM/mazes/maze_empty.txt | 9 + BolonkinNM/mazes/maze_large.txt | 11 + BolonkinNM/mazes/maze_medium.txt | 11 + BolonkinNM/mazes/maze_no_path.txt | 9 + BolonkinNM/mazes/maze_small.txt | 7 + BolonkinNM/mazes/maze_weighted.txt | 10 + BolonkinNM/observer/__init__.py | 0 BolonkinNM/observer/console_view.py | 26 ++ BolonkinNM/observer/observer.py | 7 + BolonkinNM/plot_results.py | 60 ---- BolonkinNM/requirements.txt | 2 +- BolonkinNM/results.csv | 109 ------- BolonkinNM/solver/__init__.py | 0 BolonkinNM/solver/maze_solver.py | 50 ++++ BolonkinNM/strategies/__init__.py | 0 BolonkinNM/strategies/astar_strategy.py | 45 +++ BolonkinNM/strategies/bfs_strategy.py | 31 ++ BolonkinNM/strategies/dfs_strategy.py | 35 +++ BolonkinNM/strategies/dijkstra_strategy.py | 41 +++ BolonkinNM/strategies/pathfinding_strategy.py | 30 ++ BolonkinNM/utils.py | 35 --- 72 files changed, 1252 insertions(+), 818 deletions(-) delete mode 100644 BolonkinNM/.idea/.gitignore rename BolonkinNM/.idea/{ds_project_archive.iml => maze_project_submission.iml} (100%) create mode 100644 BolonkinNM/.idea/workspace.xml delete mode 100644 BolonkinNM/bst.py create mode 100644 BolonkinNM/builders/__init__.py create mode 100644 BolonkinNM/builders/maze_builder.py create mode 100644 BolonkinNM/builders/text_file_maze_builder.py create mode 100644 BolonkinNM/commands/__init__.py create mode 100644 BolonkinNM/commands/command.py create mode 100644 BolonkinNM/commands/move_command.py create mode 100644 BolonkinNM/controller/__init__.py create mode 100644 BolonkinNM/controller/game_controller.py create mode 100644 BolonkinNM/core/__init__.py create mode 100644 BolonkinNM/core/cell.py create mode 100644 BolonkinNM/core/maze.py create mode 100644 BolonkinNM/core/player.py create mode 100644 BolonkinNM/core/search_stats.py create mode 100644 BolonkinNM/docs/README.txt delete mode 100644 BolonkinNM/docs/data/delete.png delete mode 100644 BolonkinNM/docs/data/find.png delete mode 100644 BolonkinNM/docs/data/insert.png delete mode 100644 BolonkinNM/docs/data/results.csv create mode 100644 BolonkinNM/experiment.py create mode 100644 BolonkinNM/experiment_results/empty_30x30_length.png create mode 100644 BolonkinNM/experiment_results/empty_30x30_time.png create mode 100644 BolonkinNM/experiment_results/empty_30x30_visited.png create mode 100644 BolonkinNM/experiment_results/large_100x100_length.png create mode 100644 BolonkinNM/experiment_results/large_100x100_time.png create mode 100644 BolonkinNM/experiment_results/large_100x100_visited.png create mode 100644 BolonkinNM/experiment_results/medium_50x50_length.png create mode 100644 BolonkinNM/experiment_results/medium_50x50_time.png create mode 100644 BolonkinNM/experiment_results/medium_50x50_visited.png create mode 100644 BolonkinNM/experiment_results/no_path_30x30_length.png create mode 100644 BolonkinNM/experiment_results/no_path_30x30_time.png create mode 100644 BolonkinNM/experiment_results/no_path_30x30_visited.png create mode 100644 BolonkinNM/experiment_results/raw.csv create mode 100644 BolonkinNM/experiment_results/small_10x10_length.png create mode 100644 BolonkinNM/experiment_results/small_10x10_time.png create mode 100644 BolonkinNM/experiment_results/small_10x10_visited.png create mode 100644 BolonkinNM/experiment_results/summary.csv create mode 100644 BolonkinNM/experiment_results/weighted_30x30_length.png create mode 100644 BolonkinNM/experiment_results/weighted_30x30_time.png create mode 100644 BolonkinNM/experiment_results/weighted_30x30_visited.png delete mode 100644 BolonkinNM/experiments.py delete mode 100644 BolonkinNM/hash_table.py delete mode 100644 BolonkinNM/linked_list.py create mode 100644 BolonkinNM/mazes/maze_empty.txt create mode 100644 BolonkinNM/mazes/maze_large.txt create mode 100644 BolonkinNM/mazes/maze_medium.txt create mode 100644 BolonkinNM/mazes/maze_no_path.txt create mode 100644 BolonkinNM/mazes/maze_small.txt create mode 100644 BolonkinNM/mazes/maze_weighted.txt create mode 100644 BolonkinNM/observer/__init__.py create mode 100644 BolonkinNM/observer/console_view.py create mode 100644 BolonkinNM/observer/observer.py delete mode 100644 BolonkinNM/plot_results.py delete mode 100644 BolonkinNM/results.csv create mode 100644 BolonkinNM/solver/__init__.py create mode 100644 BolonkinNM/solver/maze_solver.py create mode 100644 BolonkinNM/strategies/__init__.py create mode 100644 BolonkinNM/strategies/astar_strategy.py create mode 100644 BolonkinNM/strategies/bfs_strategy.py create mode 100644 BolonkinNM/strategies/dfs_strategy.py create mode 100644 BolonkinNM/strategies/dijkstra_strategy.py create mode 100644 BolonkinNM/strategies/pathfinding_strategy.py delete mode 100644 BolonkinNM/utils.py diff --git a/BolonkinNM/.idea/.gitignore b/BolonkinNM/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/BolonkinNM/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/BolonkinNM/.idea/ds_project_archive.iml b/BolonkinNM/.idea/maze_project_submission.iml similarity index 100% rename from BolonkinNM/.idea/ds_project_archive.iml rename to BolonkinNM/.idea/maze_project_submission.iml diff --git a/BolonkinNM/.idea/misc.xml b/BolonkinNM/.idea/misc.xml index b56db6e..0ebfc91 100644 --- a/BolonkinNM/.idea/misc.xml +++ b/BolonkinNM/.idea/misc.xml @@ -1,4 +1,4 @@ - + \ No newline at end of file diff --git a/BolonkinNM/.idea/modules.xml b/BolonkinNM/.idea/modules.xml index 699d578..a636c96 100644 --- a/BolonkinNM/.idea/modules.xml +++ b/BolonkinNM/.idea/modules.xml @@ -2,7 +2,7 @@ - + \ No newline at end of file diff --git a/BolonkinNM/.idea/workspace.xml b/BolonkinNM/.idea/workspace.xml new file mode 100644 index 0000000..896a098 --- /dev/null +++ b/BolonkinNM/.idea/workspace.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + 1779637417749 + + + + \ No newline at end of file diff --git a/BolonkinNM/README.md b/BolonkinNM/README.md index 7e15dad..2e6e63f 100644 --- a/BolonkinNM/README.md +++ b/BolonkinNM/README.md @@ -1,18 +1,24 @@ -# Задание 1 — структуры данных +# Maze Solver Project -Процедурная реализация: -- linked_list.py -- hash_table.py -- bst.py +ООП-проект для поиска выхода из лабиринта с паттернами: +- Builder +- Strategy +- Observer +- Command -Эксперименты и отчёты: -- experiments.py -- plot_results.py -- results.csv -- docs/report.md -- docs/data/*.png - -Запуск: +## Запуск ```bash python main.py ``` + +## Эксперименты +```bash +python experiment.py +``` + +Результаты сохраняются в папку `experiment_results/`. + +## Требования +```bash +pip install -r requirements.txt +``` diff --git a/BolonkinNM/bst.py b/BolonkinNM/bst.py deleted file mode 100644 index 221fd67..0000000 --- a/BolonkinNM/bst.py +++ /dev/null @@ -1,118 +0,0 @@ -from typing import Any, Dict, List, Optional - - -Node = Dict[str, Any] - - -def _make_node(name: str, phone: str) -> Node: - return {"name": name, "phone": phone, "left": None, "right": None} - - -def bst_insert(root: Optional[Node], name: str, phone: str) -> Node: - new_node = _make_node(name, phone) - - if root is None: - return new_node - - current = root - parent = None - - while current is not None: - parent = current - if name < current["name"]: - current = current["left"] - elif name > current["name"]: - current = current["right"] - else: - current["phone"] = phone - return root - - if name < parent["name"]: - parent["left"] = new_node - else: - parent["right"] = new_node - - return root - - -def bst_find(root: Optional[Node], name: str) -> Optional[str]: - current = root - while current is not None: - if name < current["name"]: - current = current["left"] - elif name > current["name"]: - current = current["right"] - else: - return current["phone"] - return None - - -def _find_min_node(node: Node) -> Node: - current = node - while current["left"] is not None: - current = current["left"] - return current - - -def bst_delete(root: Optional[Node], name: str) -> Optional[Node]: - if root is None: - return None - - parent = None - current = root - - while current is not None and current["name"] != name: - parent = current - if name < current["name"]: - current = current["left"] - else: - current = current["right"] - - if current is None: - return root - - if current["left"] is None or current["right"] is None: - child = current["left"] if current["left"] is not None else current["right"] - - if parent is None: - return child - - if parent["left"] is current: - parent["left"] = child - else: - parent["right"] = child - return root - - succ_parent = current - successor = current["right"] - while successor["left"] is not None: - succ_parent = successor - successor = successor["left"] - - current["name"] = successor["name"] - current["phone"] = successor["phone"] - - successor_child = successor["right"] - if succ_parent["left"] is successor: - succ_parent["left"] = successor_child - else: - succ_parent["right"] = successor_child - - return root - - -def bst_list_all(root: Optional[Node]) -> List[Dict[str, str]]: - result: List[Dict[str, str]] = [] - stack: List[Node] = [] - current = root - - while current is not None or stack: - while current is not None: - stack.append(current) - current = current["left"] - - current = stack.pop() - result.append({"name": current["name"], "phone": current["phone"]}) - current = current["right"] - - return result diff --git a/BolonkinNM/builders/__init__.py b/BolonkinNM/builders/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BolonkinNM/builders/maze_builder.py b/BolonkinNM/builders/maze_builder.py new file mode 100644 index 0000000..b055db8 --- /dev/null +++ b/BolonkinNM/builders/maze_builder.py @@ -0,0 +1,7 @@ +from abc import ABC, abstractmethod + + +class MazeBuilder(ABC): + @abstractmethod + def buildFromFile(self, filename): + raise NotImplementedError diff --git a/BolonkinNM/builders/text_file_maze_builder.py b/BolonkinNM/builders/text_file_maze_builder.py new file mode 100644 index 0000000..5e9ca03 --- /dev/null +++ b/BolonkinNM/builders/text_file_maze_builder.py @@ -0,0 +1,52 @@ +from core.cell import Cell +from core.maze import Maze +from builders.maze_builder import MazeBuilder + + +class TextFileMazeBuilder(MazeBuilder): + def buildFromFile(self, filename): + with open(filename, "r", encoding="utf-8") as f: + lines = [line.rstrip("\n") for line in f] + + if not lines: + raise ValueError("Maze file is empty") + + width = max(len(line) for line in lines) + height = len(lines) + + cells = [] + startCell = None + exitCell = None + + for y, line in enumerate(lines): + row = [] + for x in range(width): + ch = line[x] if x < len(line) else "#" + + if ch == "#": + cell = Cell(x, y, isWall=True) + elif ch == "S": + if startCell is not None: + raise ValueError("Multiple start cells found") + cell = Cell(x, y, isWall=False, isStart=True) + startCell = cell + elif ch == "E": + if exitCell is not None: + raise ValueError("Multiple exit cells found") + cell = Cell(x, y, isWall=False, isExit=True) + exitCell = cell + elif ch in (" ", "."): + cell = Cell(x, y, isWall=False) + elif ch.isdigit(): + cell = Cell(x, y, isWall=False, weight=max(1, int(ch))) + else: + raise ValueError(f"Unsupported symbol '{ch}' at ({x}, {y})") + row.append(cell) + cells.append(row) + + if startCell is None: + raise ValueError("Start cell 'S' not found") + if exitCell is None: + raise ValueError("Exit cell 'E' not found") + + return Maze(cells, width, height, startCell, exitCell) diff --git a/BolonkinNM/commands/__init__.py b/BolonkinNM/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BolonkinNM/commands/command.py b/BolonkinNM/commands/command.py new file mode 100644 index 0000000..71f2dc6 --- /dev/null +++ b/BolonkinNM/commands/command.py @@ -0,0 +1,11 @@ +from abc import ABC, abstractmethod + + +class Command(ABC): + @abstractmethod + def execute(self): + raise NotImplementedError + + @abstractmethod + def undo(self): + raise NotImplementedError diff --git a/BolonkinNM/commands/move_command.py b/BolonkinNM/commands/move_command.py new file mode 100644 index 0000000..e90b7f1 --- /dev/null +++ b/BolonkinNM/commands/move_command.py @@ -0,0 +1,37 @@ +from commands.command import Command + + +class MoveCommand(Command): + DIRECTION_TO_DELTA = { + "W": (0, -1), + "A": (-1, 0), + "S": (0, 1), + "D": (1, 0), + } + + def __init__(self, player, maze, direction): + self.player = player + self.maze = maze + self.direction = direction.upper() + self.previousCell = None + + def execute(self): + if self.direction not in self.DIRECTION_TO_DELTA: + return False + + dx, dy = self.DIRECTION_TO_DELTA[self.direction] + current = self.player.currentCell + new_cell = self.maze.getCell(current.x + dx, current.y + dy) + + if new_cell is None or not new_cell.isPassable(): + return False + + self.previousCell = current + self.player.setCell(new_cell) + return True + + def undo(self): + if self.previousCell is None: + return False + self.player.setCell(self.previousCell) + return True diff --git a/BolonkinNM/controller/__init__.py b/BolonkinNM/controller/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BolonkinNM/controller/game_controller.py b/BolonkinNM/controller/game_controller.py new file mode 100644 index 0000000..0a4cb39 --- /dev/null +++ b/BolonkinNM/controller/game_controller.py @@ -0,0 +1,30 @@ +from commands.move_command import MoveCommand + + +class GameController: + def __init__(self, maze, player, view): + self.maze = maze + self.player = player + self.view = view + self.history = [] + + def move(self, direction): + command = MoveCommand(self.player, self.maze, direction) + if command.execute(): + self.history.append(command) + self.view.update({"type": "move", "direction": direction}) + self.view.render(self.maze, player_position=self.player.currentCell) + return True + print("Cannot move there") + return False + + def undo(self): + if not self.history: + print("Nothing to undo") + return False + command = self.history.pop() + if command.undo(): + self.view.update({"type": "undo"}) + self.view.render(self.maze, player_position=self.player.currentCell) + return True + return False diff --git a/BolonkinNM/core/__init__.py b/BolonkinNM/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BolonkinNM/core/cell.py b/BolonkinNM/core/cell.py new file mode 100644 index 0000000..44e2d76 --- /dev/null +++ b/BolonkinNM/core/cell.py @@ -0,0 +1,26 @@ +from dataclasses import dataclass + + +@dataclass +class Cell: + x: int + y: int + isWall: bool = False + isStart: bool = False + isExit: bool = False + weight: int = 1 + + def isPassable(self): + return not self.isWall + + def __repr__(self): + parts = [f"Cell({self.x}, {self.y}"] + if self.isWall: + parts.append("WALL") + if self.isStart: + parts.append("START") + if self.isExit: + parts.append("EXIT") + if self.weight != 1: + parts.append(f"w={self.weight}") + return ", ".join(parts) + ")" diff --git a/BolonkinNM/core/maze.py b/BolonkinNM/core/maze.py new file mode 100644 index 0000000..59c86dd --- /dev/null +++ b/BolonkinNM/core/maze.py @@ -0,0 +1,49 @@ +class Maze: + def __init__(self, cells, width, height, startCell=None, exitCell=None): + self.cells = cells + self.width = width + self.height = height + self.startCell = startCell + self.exitCell = exitCell + + def getCell(self, x, y): + if 0 <= x < self.width and 0 <= y < self.height: + return self.cells[y][x] + return None + + def getNeighbors(self, cell): + neighbors = [] + for dx, dy in ((0, -1), (0, 1), (-1, 0), (1, 0)): + nx, ny = cell.x + dx, cell.y + dy + neighbor = self.getCell(nx, ny) + if neighbor is not None and neighbor.isPassable(): + neighbors.append(neighbor) + return neighbors + + def render_lines(self, player_position=None, path=None): + path_set = {(c.x, c.y) for c in path} if path else set() + player_pos = None if player_position is None else (player_position.x, player_position.y) + lines = [] + for y in range(self.height): + row = [] + for x in range(self.width): + cell = self.cells[y][x] + if player_pos == (x, y): + row.append("P") + elif cell.isStart: + row.append("S") + elif cell.isExit: + row.append("E") + elif cell.isWall: + row.append("#") + elif (x, y) in path_set: + row.append("*") + elif cell.weight > 1: + row.append(str(cell.weight)) + else: + row.append(" ") + lines.append("".join(row)) + return lines + + def render(self, player_position=None, path=None): + return "\n".join(self.render_lines(player_position=player_position, path=path)) diff --git a/BolonkinNM/core/player.py b/BolonkinNM/core/player.py new file mode 100644 index 0000000..b68a0ff --- /dev/null +++ b/BolonkinNM/core/player.py @@ -0,0 +1,6 @@ +class Player: + def __init__(self, currentCell): + self.currentCell = currentCell + + def setCell(self, cell): + self.currentCell = cell diff --git a/BolonkinNM/core/search_stats.py b/BolonkinNM/core/search_stats.py new file mode 100644 index 0000000..5548118 --- /dev/null +++ b/BolonkinNM/core/search_stats.py @@ -0,0 +1,11 @@ +from dataclasses import dataclass, field + + +@dataclass +class SearchStats: + timeMs: float + visitedCells: int + pathLength: int + path: list = field(default_factory=list) + found: bool = False + algorithm: str = "" diff --git a/BolonkinNM/docs/README.txt b/BolonkinNM/docs/README.txt new file mode 100644 index 0000000..c760a90 --- /dev/null +++ b/BolonkinNM/docs/README.txt @@ -0,0 +1 @@ +Place report files and experiment outputs here. diff --git a/BolonkinNM/docs/data/delete.png b/BolonkinNM/docs/data/delete.png deleted file mode 100644 index b5307a7e9621dc8ca74fc262eb91900a6b5f0ba7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62586 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

_IW0h0G=K&Q9lI;0GXTit4m{RpWRFXY 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

=Yx`rtH{)5HA)*R$>h68W81Yu^j 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ⓈhpoMRMj=~d+zSUufvGLO=Jg%7 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 Knt0g2>wf_X#?o{E diff --git a/BolonkinNM/docs/data/find.png b/BolonkinNM/docs/data/find.png deleted file mode 100644 index d0d4e8157efbc0983801c998de34f332a9a8b7f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52399 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 GQGWw7@3(UR diff --git a/BolonkinNM/docs/data/insert.png b/BolonkinNM/docs/data/insert.png deleted file mode 100644 index b2832b9554baeaaa90fb6b74e2fa04110e906409..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49499 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 + +buildFromFile(filename) + } + + class TextFileMazeBuilder { + +buildFromFile(filename) + } + + class PathFindingStrategy { + <> + +findPath(maze, start, exitCell) + } + + class BFSStrategy { + +findPath(maze, start, exitCell) + } + + class DFSStrategy { + +findPath(maze, start, exitCell) + } + + class AStarStrategy { + +findPath(maze, start, exitCell) + } + + class SearchStats { + +timeMs + +visitedCells + +pathLength + +path + } + + class MazeSolver { + +maze + +strategy + +setStrategy(strategy) + +solve() + } + + class Observer { + <> + +update(event) + } + + class ConsoleView { + +update(event) + +render(maze, player_position, path) + } + + class Command { + <> + +execute() + +undo() + } + + class MoveCommand { + +execute() + +undo() + } + + class Player { + +currentCell + +setCell(cell) + } + + Maze <|-- TextFileMazeBuilder : creates + MazeBuilder <|.. TextFileMazeBuilder + PathFindingStrategy <|.. BFSStrategy + PathFindingStrategy <|.. DFSStrategy + PathFindingStrategy <|.. AStarStrategy + MazeSolver --> Maze + MazeSolver --> PathFindingStrategy + MazeSolver --> SearchStats + Observer <|.. ConsoleView + Command <|.. MoveCommand + MoveCommand --> Player + MoveCommand --> Maze + ConsoleView --> Maze + Maze --> Cell ``` -### Хеш-таблица +## 5. Ключевые классы и их роль -Хранится как список бакетов фиксированной длины, где каждый бакет — голова связного списка или `None`. +### Cell +Хранит координаты клетки и её тип. Позволяет быстро проверять, является ли клетка проходимой. -### Двоичное дерево поиска +### Maze +Содержит двумерную карту клеток, размер лабиринта, а также ссылки на старт и выход. Даёт доступ к соседним клеткам по четырём направлениям. -Узел хранится как словарь: +### TextFileMazeBuilder +Читает текстовый файл, создаёт объекты `Cell`, определяет старт и выход, затем возвращает готовый `Maze`. -```python -{"name": "Имя", "phone": "123", "left": None, "right": None} -``` +### BFSStrategy +Ищет кратчайший путь по числу шагов. Подходит для случая, когда все переходы одинаковой стоимости. -Для BST использованы итеративные операции, чтобы корректно работать и на отсортированных данных. +### DFSStrategy +Быстро исследует пространство, но не гарантирует кратчайший путь. Полезен как сравнительный алгоритм. -## Методика эксперимента +### AStarStrategy +Использует эвристику Манхэттенского расстояния. Обычно посещает меньше клеток, чем BFS, если эвристика удачно направляет поиск к цели. -- Количество записей: `N = 10000` -- Режимы данных: - - случайный порядок; - - отсортированный порядок. -- Каждое измерение повторялось **5 раз**. -- В CSV сохранены: - - все отдельные замеры; - - среднее время для каждой операции, структуры и режима. +### MazeSolver +Оркестратор, который хранит лабиринт и текущую стратегию. Вызывает поиск, измеряет время и собирает статистику. -Операции: +### SearchStats +Содержит итог поиска: время выполнения, количество посещённых клеток и длину пути. -- вставка всех записей; -- поиск 100 существующих и 10 отсутствующих имён; -- удаление 50 случайных имён. +### ConsoleView +Реализует наблюдателя и умеет выводить лабиринт и найденный путь в консоль. -## Графики +### MoveCommand +Оформляет ход игрока как объект-команду. Поддерживает отмену последнего перемещения. -![insert](data/insert.png) +## 6. Экспериментальная часть -![find](data/find.png) +### 6.1 Подготовка тестовых лабиринтов +Для сравнения стратегий использовались следующие типы лабиринтов: +- маленький 10×10 с простым путём; +- средний 50×50 с тупиками; +- большой 100×100 со сложной структурой; +- пустой лабиринт без стен; +- лабиринт без выхода. -![delete](data/delete.png) +### 6.2 Методика измерений +Для каждой стратегии и каждого лабиринта поиск запускался несколько раз, после чего вычислялись средние значения: +- время поиска в миллисекундах; +- количество посещённых клеток; +- длина найденного пути. -## Средние результаты +Результаты сохранялись в CSV-файл в двух вариантах: +- сырой набор измерений; +- усреднённая таблица. -| Режим | Операция | LinkedList | HashTable | BST | Лучший результат | -|---|---:|---:|---:|---:|---| -| случайный | insert | 3.949566 | 0.208964 | 0.018028 | BST | -| случайный | find | 0.033693 | 0.001534 | 0.000190 | BST | -| случайный | delete | 0.016076 | 0.000727 | 0.000102 | BST | -| отсортированный | insert | 2.998378 | 0.208710 | 4.163651 | HashTable | -| отсортированный | find | 0.023923 | 0.001819 | 0.037987 | HashTable | -| отсортированный | delete | 0.011258 | 0.000863 | 0.019363 | HashTable | +## 7. Анализ эффективности -## Анализ результатов +### BFS +BFS гарантирует кратчайший путь по числу шагов, если все переходы имеют одинаковую стоимость. На простых и пустых лабиринтах работает стабильно и предсказуемо. Минус — может посещать много клеток, особенно на больших лабиринтах. -### Влияние порядка входных данных на BST +### DFS +DFS может быстро найти какой-то путь, но он не обязательно будет кратчайшим. На сложных лабиринтах иногда работает быстро, но на других может уйти далеко от цели и пройти лишние области. -На случайных данных BST работает значительно быстрее, чем на отсортированных. Это связано с тем, что при случайной вставке дерево остаётся ближе к сбалансированному состоянию. +### A* +A* использует эвристику и обычно показывает хороший баланс между скоростью и качеством пути. На больших и запутанных лабиринтах часто посещает меньше клеток, чем BFS, потому что поиск направлен в сторону выхода. -На отсортированных данных дерево вырождается в цепочку, поэтому вставка становится медленной, а поиск и удаление тоже деградируют по времени. +### Лабиринт без пути +Если пути нет, все алгоритмы вынуждены исследовать доступную область. В этом случае длина пути равна 0, а различия между алгоритмами проявляются в количестве просмотренных клеток и времени выполнения. -### Почему хеш-таблица почти не чувствительна к порядку +### Вывод по выбору алгоритма +- BFS стоит выбирать, когда нужен гарантированно кратчайший путь и веса переходов одинаковы. +- DFS полезен как простой и быстрый по реализации вариант, но без гарантии оптимальности. +- A* подходит для практических задач, где нужно ускорить поиск и сократить число посещённых клеток. +- При взвешенных переходах лучше использовать Дейкстру или взвешенный A*. -Хеш-таблица распределяет элементы по бакетам через хеш-функцию, поэтому сам порядок входа почти не влияет на скорость. Влияние может появляться только из-за коллизий, но в целом поведение остаётся близким к постоянному времени. +## 8. Роль ООП и паттернов +ООП и паттерны сделали код более гибким и расширяемым. Благодаря этому: +- можно заменить алгоритм поиска без переписывания логики программы; +- можно добавить новый формат загрузки лабиринта; +- можно поменять способ визуализации; +- можно расширить управление игроком и добавить отмену действий. -### Почему связный список всегда медленен при поиске +Без паттернов пришлось бы связывать загрузку, поиск, отображение и управление в один большой блок кода. Это усложнило бы отладку и дальнейшие изменения. -Поиск в связном списке выполняется последовательным просмотром элементов. Поэтому при большом количестве записей приходится проходить много узлов, и операция остаётся линейной по времени. +## 9. Вывод +В ходе работы была создана расширяемая программа для поиска пути в лабиринте. Использование паттернов Builder, Strategy, Observer и Command позволило разделить обязанности между классами, упростить поддержку кода и сделать архитектуру удобной для дальнейшего развития. Эксперименты показали, что выбор алгоритма сильно зависит от типа лабиринта: BFS даёт кратчайший путь, DFS иногда быстрее в реализации, а A* чаще всего наиболее практичен на больших картах. -### Как удаление работает в каждой структуре - -- В связном списке нужно сначала найти нужный узел, затем переназначить ссылку. -- В хеш-таблице сначала выбирается бакет, затем удаление выполняется внутри короткой цепочки. -- В BST удаление зависит от числа потомков: если потомок один или ноль, операция простая; если два — нужно найти преемника. - -## Вывод - -Для частых вставок и особенно частого поиска в реальной задаче чаще всего лучше подходит **хеш-таблица**. - -Если важно получать данные в отсортированном виде, удобнее использовать **BST**. - -**Связный список** подходит для маленьких объёмов данных или очень простых сценариев, но при большом числе записей он проигрывает по скорости поиска. +## 10. Приложения +- Листинги ключевых классов. +- CSV-файлы с результатами экспериментов. +- Графики сравнений. +- Файлы с тестовыми лабиринтами. diff --git a/BolonkinNM/experiment.py b/BolonkinNM/experiment.py new file mode 100644 index 0000000..588f377 --- /dev/null +++ b/BolonkinNM/experiment.py @@ -0,0 +1,225 @@ +from pathlib import Path +from statistics import mean +import csv +import random + +import matplotlib.pyplot as plt + +from core.cell import Cell +from core.maze import Maze +from solver.maze_solver import MazeSolver +from strategies.astar_strategy import AStarStrategy +from strategies.bfs_strategy import BFSStrategy +from strategies.dfs_strategy import DFSStrategy +from strategies.dijkstra_strategy import DijkstraStrategy + + +BASE_DIR = Path(__file__).resolve().parent +OUT_DIR = BASE_DIR / "experiment_results" + + +def build_maze_from_symbols(lines): + height = len(lines) + width = max(len(line) for line in lines) + cells = [] + start = None + exit_cell = None + for y, line in enumerate(lines): + row = [] + for x in range(width): + ch = line[x] if x < len(line) else "#" + if ch == "#": + cell = Cell(x, y, isWall=True) + elif ch == "S": + cell = Cell(x, y, isWall=False, isStart=True) + start = cell + elif ch == "E": + cell = Cell(x, y, isWall=False, isExit=True) + exit_cell = cell + elif ch == " " or ch == ".": + cell = Cell(x, y, isWall=False) + elif ch.isdigit(): + cell = Cell(x, y, isWall=False, weight=int(ch)) + else: + raise ValueError(f"Unknown symbol '{ch}' at {x},{y}") + row.append(cell) + cells.append(row) + return Maze(cells, width, height, start, exit_cell) + + +def generate_empty_maze(width, height): + lines = [" " * width for _ in range(height)] + lines = [list(row) for row in lines] + lines[1][1] = "S" + lines[height - 2][width - 2] = "E" + return build_maze_from_symbols(["".join(row) for row in lines]) + + +def generate_simple_maze(width, height): + grid = [["#" for _ in range(width)] for _ in range(height)] + for x in range(1, width - 1): + grid[1][x] = " " + for y in range(1, height - 1): + grid[y][width - 2] = " " + grid[1][1] = "S" + grid[height - 2][width - 2] = "E" + return build_maze_from_symbols(["".join(row) for row in grid]) + + +def generate_branching_maze(width, height, seed=42, wall_density=0.30): + rng = random.Random(seed) + grid = [["#" for _ in range(width)] for _ in range(height)] + x, y = 1, 1 + grid[y][x] = "S" + while (x, y) != (width - 2, height - 2): + candidates = [] + for dx, dy in [(1, 0), (0, 1)]: + nx, ny = x + dx, y + dy + if 1 <= nx < width - 1 and 1 <= ny < height - 1: + candidates.append((nx, ny)) + if not candidates: + break + x, y = rng.choice(candidates) + grid[y][x] = " " + grid[height - 2][width - 2] = "E" + + # carve extra corridors and dead ends + for yy in range(1, height - 1): + for xx in range(1, width - 1): + if grid[yy][xx] == "#" and rng.random() > wall_density: + grid[yy][xx] = " " + grid[1][1] = "S" + grid[height - 2][width - 2] = "E" + return build_maze_from_symbols(["".join(row) for row in grid]) + + +def generate_no_path_maze(width, height): + grid = [[" " for _ in range(width)] for _ in range(height)] + for x in range(width): + grid[height // 2][x] = "#" + grid[1][1] = "S" + grid[height - 2][width - 2] = "E" + return build_maze_from_symbols(["".join(row) for row in grid]) + + +def generate_weighted_maze(width, height, seed=123): + rng = random.Random(seed) + grid = [[" " for _ in range(width)] for _ in range(height)] + for y in range(height): + for x in range(width): + r = rng.random() + if r < 0.12: + grid[y][x] = "#" + elif r < 0.25: + grid[y][x] = "3" + elif r < 0.40: + grid[y][x] = "2" + else: + grid[y][x] = "1" + # ensure path-ish + for x in range(width): + grid[1][x] = "1" + for y in range(1, height): + grid[y][width - 2] = "1" + grid[1][1] = "S" + grid[height - 2][width - 2] = "E" + return build_maze_from_symbols(["".join(row) for row in grid]) + + +def bench_one_maze(maze_name, maze, strategies, repeats=5): + summary_rows = [] + raw_rows = [] + for strategy_name, strategy_factory in strategies: + times, visiteds, lengths = [], [], [] + for run in range(1, repeats + 1): + solver = MazeSolver(maze) + solver.setStrategy(strategy_factory()) + stats = solver.solve() + raw_rows.append([maze_name, strategy_name, run, f"{stats.timeMs:.6f}", stats.visitedCells, stats.pathLength]) + times.append(stats.timeMs) + visiteds.append(stats.visitedCells) + lengths.append(stats.pathLength) + summary_rows.append([maze_name, strategy_name, f"{mean(times):.6f}", f"{mean(visiteds):.2f}", f"{mean(lengths):.2f}", repeats]) + return summary_rows, raw_rows + + +def save_csv(path, rows): + with open(path, "w", newline="", encoding="utf-8") as f: + csv.writer(f).writerows(rows) + + +def plot_summary(summary_rows): + by_maze = {} + for row in summary_rows[1:]: + maze_name, strategy, avg_time, avg_visited, avg_len, runs = row + by_maze.setdefault(maze_name, []).append((strategy, float(avg_time), float(avg_visited), float(avg_len))) + + for maze_name, items in by_maze.items(): + items.sort(key=lambda t: t[0]) + strategies = [i[0] for i in items] + x = list(range(len(strategies))) + + plt.figure(figsize=(8, 4)) + plt.bar(x, [i[1] for i in items]) + plt.xticks(x, strategies) + plt.ylabel("ms") + plt.title(f"{maze_name} — avg time") + plt.tight_layout() + plt.savefig(OUT_DIR / f"{maze_name}_time.png", dpi=150) + plt.close() + + plt.figure(figsize=(8, 4)) + plt.bar(x, [i[2] for i in items]) + plt.xticks(x, strategies) + plt.ylabel("cells") + plt.title(f"{maze_name} — visited cells") + plt.tight_layout() + plt.savefig(OUT_DIR / f"{maze_name}_visited.png", dpi=150) + plt.close() + + plt.figure(figsize=(8, 4)) + plt.bar(x, [i[3] for i in items]) + plt.xticks(x, strategies) + plt.ylabel("cells") + plt.title(f"{maze_name} — path length") + plt.tight_layout() + plt.savefig(OUT_DIR / f"{maze_name}_length.png", dpi=150) + plt.close() + + +def main(): + OUT_DIR.mkdir(exist_ok=True) + + strategies = [ + ("BFS", BFSStrategy), + ("DFS", DFSStrategy), + ("A*", AStarStrategy), + ("Dijkstra", DijkstraStrategy), + ] + + mazes = [ + ("small_10x10", generate_simple_maze(10, 10)), + ("medium_50x50", generate_branching_maze(50, 50)), + ("large_100x100", generate_branching_maze(100, 100, seed=99, wall_density=0.35)), + ("empty_30x30", generate_empty_maze(30, 30)), + ("no_path_30x30", generate_no_path_maze(30, 30)), + ("weighted_30x30", generate_weighted_maze(30, 30)), + ] + + summary = [["maze", "strategy", "avg_time_ms", "avg_visited_cells", "avg_path_length", "runs"]] + raw = [["maze", "strategy", "run", "time_ms", "visited_cells", "path_length"]] + + for maze_name, maze in mazes: + s_rows, r_rows = bench_one_maze(maze_name, maze, strategies, repeats=5) + summary.extend(s_rows) + raw.extend(r_rows) + + save_csv(OUT_DIR / "summary.csv", summary) + save_csv(OUT_DIR / "raw.csv", raw) + plot_summary(summary) + + print("Saved to", OUT_DIR.resolve()) + + +if __name__ == "__main__": + main() diff --git a/BolonkinNM/experiment_results/empty_30x30_length.png b/BolonkinNM/experiment_results/empty_30x30_length.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6a3b687a802b2bf463f046c14142bf03cbcded GIT binary patch literal 24894 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 F1OSP)=I8(b literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/empty_30x30_time.png b/BolonkinNM/experiment_results/empty_30x30_time.png new file mode 100644 index 0000000000000000000000000000000000000000..85aca79278865c7ce4276017e6760cc44a56bff2 GIT binary patch literal 18011 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/empty_30x30_visited.png b/BolonkinNM/experiment_results/empty_30x30_visited.png new file mode 100644 index 0000000000000000000000000000000000000000..8f7bac73a9a429953849b7467df3ed120899658f GIT binary patch literal 20209 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/large_100x100_length.png b/BolonkinNM/experiment_results/large_100x100_length.png new file mode 100644 index 0000000000000000000000000000000000000000..7f8c7e23d1420747394a1d784f0eb7e31307e6c3 GIT binary patch literal 25387 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


t5NFC@XH%Q*G$^s zWZ@3_r_#BLS2p)8qNa|d9W;;ep=!yz`K{)$t7R~$So>%n&zosprzX+VBF$+nuf(9! z-JQ?n(oiPEc?XSA_?QN*vgb}~)29Kyik5#;SH*2=(2R~?je*6IK2@MzL7n4Qu75S0 zE;DiUqU3hbpWBYXa`}l;F(RzKp?Q&n?}3hc2F+$!$m4Z8G02{85x9F{Zh8wQ_8HLu zI6Ev`FsIIpaHwM+LBalp>KeBlA*8i_r?TFp0nt;AJIo4A^$J>Mg5_ww$2+BYs~_{} z=t{y8v?bxUDCfAG+b*U`UYRU7;LBRa)KooDby>R; z2J~YC=eFRUtJK`i(Ba(SIW4r!7`D>}hiJxL&oKH%3MLTdcRAF)0e30lJL`?-b${_B z5ln*T>_Vitz6~)ko3bh%3EnXY&f8mWWC*5qV|@5(&AIL}4w&0222#=Pt2fM>fszR| zQH{gJTd=b}-E0KTJS_^}Y(r<|iT1p_DARlGl}1X!l$%IU11r zbQ8c^yF#LtCRp73G2Eidv|&3(d?5pXjMs&DZZx&*%xKD#3Hols`Vh{Bk@ps61V3vD(|uiN$A#7A-{!DIy*6tk=f1eJmHBs9r8NX^b~6UFxu zDW0hyj?@K~%S**i*pwx7iZh&bgST`OuTI0c2)@@(^&4G_x*do8DZTtTw5b0@vQ*t^ z#@)DtWrdx!*3H&E#!LF|`HwBUsC~cI2?>4Q%sjhh6V9bd?rh1{W+(6AaJuWt0!cI>8AZHTc z@HJ+KfPw~SvM(%6>J%)|!FCzT4Pm~k^%wyd>4v^v)EmDWD=k_bYC4tHWdlHj1_|dJ zx7bUT6D+g8^)$+`28JzVn1+3xcb@K-?s~@|=i!{@z($vbTGg4mxTJlL;SJr0|)2maft%iQgv13DPEJxbRUwJIg&cUs(8{zI3K`@~wTjSS#bJ1D1YZ+)TRrTL&o{+T>!D@VOPhZ^`9USv}LT|PS-@$HRx$@~~0;rWP z%I3FGJPf#78`wZuDtF89MisEXdilcPt51Q`kUqwW$7k}@1IP21KCqUHUsn#A0}Q)e z9QYR)+a@LkU6)@So3QGF?zb~q`}8-Io&MVxv1i@cuBdDE?#T*rxxgY*`>)J_SH-~E z_xbX*z?Agc%f2sLep79)n7Dd$6>!0=GiZfS|EdVFl*%Jk5$baaoOa0{UNZ+c!m%Xv z&C$I^MMqyoZ_A1N@V?Drv*8rrxsI=Q08hBlySk#ID7K8d^KSd&_6s+HwZGk9y7ulN z=STZBfor-qZc6gq16=!WQ3JFfb=%RIe2?WH1+JOT7?PV%3lv)Zuy$iwY|OeYVAElV zRr$x}vP{rku34=HMQ@$2#w=cX)Ig^#V&l17nSJ8j%b)AS>@WcDa0l<*P~&^qox8~5 zaK^`5Y@)fKh-lyu*=vP`J~cW!Wa?*zm|S+BDr8&^v_vM5zdY{VpRs}NB=r(a?auxupL^nRNk78vEyhQaM{%>mP1GUK z8c;8FqkqQPp#3GlGmiZ0t&b#~1R)SdI$&*7U5mrDzreGxv;|$vGcT#U0k#e_cXZXetUo34z3|#1 z3)}KF>jk?vfQp-y7TLg2@Zh(7pao{NCrq_9fvpnxdiUc_XFeW&3Tjq*W44#wu1GweLYybD+&C~S# z8$^$O11;qZUid>|73g3D-u#}uyMTu%E}S6cdg?cD$m2ki>bJI@&7#K~POX{0h8x_= zY1n!OSQ$;32Attt`O3M`EAbC#`P~{<(;U#K)N;i?7X{sA0VUD^3T(e^1s=Mk)e2kb4?I^52nN?33P1AnMBJi}T*?)G%` Kb6Mw<&;$Sy%|L1Z literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/large_100x100_time.png b/BolonkinNM/experiment_results/large_100x100_time.png new file mode 100644 index 0000000000000000000000000000000000000000..50bd2b5c317fdf8ce30c96d678a8b671dbd697cd GIT binary patch literal 18843 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 ZU(JXD6Rk6=+kc+u`c>5{*_RFf{BJzSWmNzG literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/large_100x100_visited.png b/BolonkinNM/experiment_results/large_100x100_visited.png new file mode 100644 index 0000000000000000000000000000000000000000..11bca38de69daf18b31e69e61b8a5022f1f24641 GIT binary patch literal 22421 zcmeIa2UJv9w=IkrQ9)FsMM8^hB8mc%F<~I5sv?8X_9KVx*$O*-f7v)5X4%{kW&QdhmYhlzuU zfq`Mq^=p?k85p)^Gcat{VcZU1aUSB~fKO7c3OcS@jux&SH=NBGRBpK5v~zT|vo`(J z-Q3y5+R@>xkjQBvNr7LjTwQOvNC^wu|Me3>j?R|C$FERy;jiqxc}>@afq{J=`e&16 zLNie1Cr_ z4X?mM3=Ou?P|{SiRl0aj``Wno-N&uuD`NAR@fnkLA9s0_vFI#oc{~m~8*ae>g zF77wk1fSKdHVdFHGpPh@gHPvQ?}Qa%U^pqd=^*-i|M-8(FAKc>{xLA+prGD>?JMhG zGYKJ&Za3UrnVzb{j&sYDcN_I-P-)zz>UfB0kzI~^7W`3)l^_N!{Xz;f) z+7@V(l$5*7QYYO;TLts2DaR+P$;%Tj2`VomBcr@0%g%)!I(vN2VQ~TbqQS^C^V-No z&+5R*rKPdl#%9mqxTu0&zvY%3v+9=DmjY+0BtNk@za<*2KV05uY(eLQ+(32oFNecf z!^OO2f2@2J@Sj?$9*n>lO*wCQr)g7^w`CKA2O>J|y|4M(J$@@DiZucZ|EgKt_4@NQG zjl6oST2*>HPr1L>e|>ef-qG)@?Ak*A;wWPe*3gYQ3x9REmS=sT+LhkzkrFE2kvg`3 zGxik=G{=AYJ)eqIni+0X3zwbOAshJ4QE3g*lge?@9;*B=>%}`Wrp2roU)sI7&W!E% zPA4R+uM96r^@OChY-WgzWfEX8Dbj~`MkyrEWzJF()jH99w|*cbdy@;k#sMhh>6q^C+o2KK(y%x{7QZ*M-yneyo;Gm=cZ)3j2Ca;ARqU#vB59!V#~^GFk$u~!;pW|YYl%apym zjE|~Ah;j_CzNf+Nk4)!T`L?6BMOfe>kyf zfj^c*QMosL=@z_z-hJD63%lL*$-bYDMGfpF{oZEiQLlBv^!qx6#^rvC^L*(UPnl(YzMHLNH%^}Po%Aj$7A#EDRDwJW<31B>yHj44#^ku)61$kRs|zf^-GKMj*x`Z3#KOA`BP`$pil z`c@pC8z-_Y`+yO~t@-+i!O?KJrITtqGDh%GM#SBrVe)GWH9v`63%6t^iiYEB1}DkO z4iiyqBr|P?i2WE<4Yq@$vlHFY^)Jtn-p6}yRsUXVyynatYZH8)IJ;)#IT(>2woY1K zBEcUaPWlW>7bWP}_lF4ZRV(_oSky&p3>U-JxoJeQIFG~ar%Qw#l^Ca_sAc)tb{D%b ztM|)>*%ULbj8H1dTt5Upy(O&J8LCu7yT>X})zTn4|Mh5QZiAF(XVavh-@%o|Mt@Z{ zHnx1ZHbxu&<<8!rRfk?Oti=A_qvyJAUa~pKBENDo{!Iyu@Ny{O(A1J$PUS)Cflp5) z8HFr$<0;J#`_Eh)zcpc-Rb(MIaWp&3I>||(veAkm<`olzNziV{AaeGDqcN)TtFu1F z1}GeZ8{(vKdDawyvu?;iLB6U-hqUIMl+1SQ{zctsETHIQbOeO@SXZO)CiNsbnKM1QKH&Y&X zG)m22g3t8zLB9m=i6VG;Q{n!xZ9(>8Vr5=)HOqc0Q`K$74Y86gd>w_332leZIT++G zEB3OZ1t$vnugD0Hjq*EF)X%& zz@c*YLlD(hJ5tR`%&Nnv%{m+w%|BVO!*Kelu8SxVih|d`es_|#%mca>v#I*B*0^h@^+>#%`{y7HGpt^+d&4= zS95K~^5?dOZ*On1J;@Q;7$}*5Ft+?Y3kOa)XRKg z7sJ;SoVFM3#Te#V)Yq^b6)_YfGIM(lJaKJOV5crEH0?S?)J)VnN@!CEPy1T^^~&te zAPd@*j#KyJ2py%P91&3!x+^wX#g0RDFU+g2vgsSt1o5S%%J84_dl#^&$Pt%zCtdWI z@a4gVcFTk~$MvCe<)1Mp_Z%aZo7((N9mcBC$f-9MhvnCGi)0+C-zKb%ejaMwK*?Y zZ0zkfvvLo9tRFOv5`qA?8uWFNnJDb_D`L7inpvp&?6^wJGWTi+-0L&`kv{K*p_h&g z@`r0M`>t%$)^?AB*S2VR(ZEz%qig}<`;06kLu>0epXtxEJG+EF6()7?c{Nq~Rod?F z3>vA1S6bE)ZSJe8bd;~S&(c7fT=n^IpQWyyuwPYWBjpy$17@y{UpqIOY_lEPx`!b~ zYg=m{C#LY3)Ha_cBtHny>IG3fwdl3^)y%4j-nn&o`Q}2|F7wD7MU)^Qa8z6V^ zWh+vB+6-Lk_l>I+F=bTRrxW=}rDsSp5hNdc-(42DlO+vi;j)qGae9RghM9>!L(lc3 zX1tS`YtgC=Tb=MI*DvBx(z`teFa=9)JrR5JVp+9dt&3gtwUE(1uEys5x-hXYei+u=c ziJ_gFlD(`w_IYYNW0P%)5Pn%{^jyn==6$U8;$@cwKqfpzPlfo@dv5iI=6!!~c!)3j z0oF}^q=QbRW4LlN`d{AJBmVVQdcZCmq(NSK`Qp&ah%#c|<;`=Lk=%p*xMWRZLTcp5 z*BrBUw}Ni>&aPY`;)k{Q!g7pII5)0|eyYLiP{f_Vma*4`za?t&5xWw@wPPi2D9EJX zF<$FLEP2xx8OCgeSGOx&-!JSv#8cPzQG4sJctU+sg+xVOdB-LA zhW8T@lefcR^lz~t4CTWWvDfK1siS57LjLRpp$6?=R!t6`SgH~wP;thv0P;D-&nJX4 zd)52XgSi!*PQ|f_T&#(6?>HsMf}tm6`I5YhsUo#feohGL&Mu9TQXU+%d>BI3m}6Uw z2$Sf0*rj&L>o6uWj}K$+yT07phzXsWD_>tOr+q$=pbVwNkeR=KU$ukwPKEH4RD(yk z?PAHA;hB5oc}9{(yy>m_j)S9>+q9jq^{Jc&ns^(6#LJOjFIA<{!@UbvCg^T8r&0!f ziU{F{xi47Ui+2*g#t_5Jro-?hAha-$g(qGbn}u}weZ9xZ+m#~?LAE`B{pLE zv^hJgfBMwC*Fq<056BfcZ+=UZ^uDL_y@sEZVZdEKfApSSGwm*ZqzbBzxLTX+cphas zhf_Vgzv5YSKp>%2cD<$Wk zfE(8%HWLA-VElTch@`$c598Gl9HsfIO?swtdCHF@Hp`rlpJ(_c`j+w9c5kMUvi38qe-dA63p|IPeTQRE}%b ziWp^KVy2Tjl_?(Il%kg4!$sYKCyR(t+fO4O>G#ynQ z`!Q}WgmD;v$@m(qKfDvVT^N?`Sq|`i7Te%rZM))E&{`k&Nf_A;wN0G?ynZ5 zF}jS}B8*HNUEPI$<#D}7o+0?XngfH?uNsy6c!K-x>iE18QfUi%e3Ij0^{P_y$&v!a zux9JAB(LKagEh_O8SDG<=H!=}!fj;F8fiZ@@R_Pyl;R8I%?>)HiMbocC}tXG)v~(W zyDleoFM3*MPIDiX7ZVj_+sDaMdi0YQ>~6~ABbS_yU4M9G!O3{c_93BuFy3RU!PIwY zf{*X8bZ?rEai4GS_HRuICt?A(hRpJWu#AZ)2ok*#+cargJbwWot>;)a*9@_a^=z$* zv5_lp4jjEzmM$dB9-vUE7ONmw;ePaH@G9d}e1w<0g8B8WyTvN$SGw4bSZ?JMIbLB_ zVHPnjS-{$9Q=>>>Orle-pNMP&g}_2j=5rcB5NIc-p39IjR?5 zUAQ~48jVlOfF9i~Gqi?9>c^|D-(`A8zVz;MI66kw+sLQ<>MsC(t`39%w!m15nKxkjtDrOnhR9FZH$Engoic87MbLR!F)EBp8k=WB=)+}pXI z4{Pi@S5y5k$FRgb(~3e+$zPR+xa1fpNg6S0bqi{H75n+w30y`&hYi)J4TCexpB`mB zdPN&vIeWgtI+Wl{tM)hMgG+HzZZ)LNzJiiABk#dwXwg0f(|f!fpDaVCuD2-RzwnXA zX4Ocy%RDJmoUdf{>yUV-omP=iXMufs8MDX)kT7X;p5;JKupM?RbsAg}5$8^tb(3)~ z8m1nY15&8Nb_wuvQNx_l=<2wmKYxjgP@Dx`;_+L!Q3*gm*Pf?U$1GHVY~1f%L@06@#_r~n$aapCkTdO7 z>hH7ETCqzTT`m*abx$U#YJetCX3PS40q-zlxw?#Gwc zY`fTn4Eov_0;>Mj@r#AzzE+rwiYD%h5Z5TXIsN%WN;QwaPf)`wHY&PC+;3$eZ>B+d zn3$D%ASlhge2GeOHpgm<--CXVs)ygpc1(opNhc~ez~hi!6G3xee|njS9(^Jk^bC|ghYm~t2@p9-;wNWBwO)ixz{S>Z}i zZUTazO6PigT(Sy+Mk1W4h8l*NUZIIMT+`TbmxAoC98*``)#=`8?_&J=R=h^je#=iG zZNKq7u-Q+-Wb7ZU`hzfI3qKTYsGo17rRB!)yK;LcP;pTsP7dX(^9Hx`p-&;~IoFjv zJr?D}8UBk1uk6x~q{T9$eHuXrD2L6YY-dk|*nEf{($77C8S|J838uO4;J#%t(o^Ow zSJ1yKMs`dh3J}xdedpU13YrS+I}O}KfliR2z6BPrX!=zARqcRC!h502RMpa-A9lG6 zT4*O$k}Devzg8X8w|l}YIq=xEKlGf?83&Zr7GQh4Oc(06yb{hWJH1xv{foRe9XOKG zaE;qmOh?XBD7=~(RXsZyUfobg>a&{W)*4flozoT;W?)c>0p`rgVge|~nzIMcr_eHK z28Qf9pl-ixRiN}c^;hBj0aQg;@;*8h5M|(eeXu1B!s^&L(;W-}goXnb8LaLkR;$Ef zgfI6Jf28lEk z!d&iOZ%DS-oYeR{2iQ)yDcZ`NOC@^~gNZH>!vU4Sx$Tv@l*o!&;qut(O$_he?E4#w z9P@Sy(8d3VP0ou9E!!f%Gn!T6umr@MCVis2tO9=ioikb){QP)l3VN(PYhU@YW6~H& za_cKIRXuy)Crpk_Ee3nAMv2+UJ3)o^2;faSeyMzLu!#0Qb)Ho+n>jel2?&1NI7GFM6(jw21$? zl>EQpIsXHcgc$pPe8^r%8ffu)amHM+9YP{h$#;2Pg-goynqjf)b?>p9t6tx3?-=Q7 zMGahA$efwMqw?t*{!z}ewyhbWrWFtK)|N(7AkGQ#vfcy)3jvlnzKA~u&v@R2az@N$ zd9vJ}Il`vHy6#ZNl10p_lHJEU@X&q=242@nQB?uP!@C&T*=9MYu%Du#Y>03{ zw?+#QCSL>6T}#iUUW^jw(evWLp2LxlPM-L!jv5P}8M@DIbZvEMP6>hb4(D1yN|^LS zG&kI}Yt$0ywqoYteu8BCk|OJ*A76JGjE9xpiTOi zu90+Q(Eh=;T?do5FiZT3_@6k)e>6+^W!)|1AY;MRwQ}PwzD)+&ztqPU+Ai$}xFdXc zW@w0K-|yf_h7?fR5nU@(BH#g(d+Z$oKIm2$EtH`<|&w6qG%j-+*i{z7nFGa02^9P@uP|I?w12)3N zF+FvR*wIE5wfOY-NQmUtCmh+nQxWziiMZJ# zdCbI|I_7PHxGE}H4m1-=T1tG3@G-o4y1^|rL{@qmE10)HU5!NmM#c@2sCT@OGXgA0Spi0m+YBwFRn;bJEGwejRiwwVFKr-4Bx*GN_RH;7Aa5fPAaI369CjN9 z(u{=Dx6jw(5x$u5<1U6NThVNUgWc@nqf@$F1vQ~*N+hGQ8lepx>-bAMO;R)Hy;Eip-auUU~gK2j`F3Q>+$(xP1o49_(+H)ONNj2sno!BA~ zbld#75og{7Ta00rRqPAeEz(q8iqk;cQgtkys^T40LxfBeM^2O-Xi?M&=uI2t)!^P- zZ2+~!lXVjQdRO_)+jLkpy8#p|x+lo_PP@&1>M)NooF0c&_Io1Iv?9Cv(3#|p>GyYc z;7ZDg`VK|MAmWAha7vsG)Df#zjuAaopCDh}5#63^IqVyvNLpK67M^iIf~Xa9jCsJ^ zyDcmO7UO`lG744zDqdfnC~=J6_ZF}w-l4k~)8hdI{m`g{(s#H;eBFY-Y4xT3L>j5IrdSziMqP7>LJ=YIAPYiTcb9or#i$DUa|E`_k0@xZWWSnhs zL8|ZJQRl(dRE;FfbZjQa*c@6ftC|?|{q*5@Z=p~?If!#Fs^R;Pf;78TkiQx+8cp9; z5GEEs&WA_Z41zIvbFKO*h92Ew5Z;#7a7$^4iM*j)(&F-}7?dw@22Ki6-vYKYL-e^^ zT0r?ldgAR-dR?%(KqU1*IF)2vUYZG62`^aibpu*~;%20XcCr*L`B~($?N+$8FWRED zOc^BKaa&ro{F;*1bv8sB5IjTN%p z8fEFpaBnGN1@oX&`m95r(+rAfyhGVsYaZw;1W56N_SDwPa;;o)KDXkVC2oAUmsi7= zo~)%NE7lFNYY`7STAuZ$MBbVZD|gtNbs$aTcx-!R1SR)((t(zb{KG3L3CGWC^?S&Q zuJ_KAMVcLK65!v^x~=5?8!6-PnE!Qw&VK*^`1g2K9g6!+${>WTp)jcm>g8Q~=}>GP zHyU>MoDd>#+O}o8=JJqG`{|HE=#UF*YblxSed8-bJZX^mEEa?%c z=6rSupOWAwh4Ri04TK>OPKc3kGHn+**K^B^j{{Mg%FrbLfQu z4Y?IcGYDYG7(Q>`lBz+2VyFnY&)y3%3I+Ki(u*1Z1#S1|g6lKHBwFy8)PpRx`s1p+ zA`(V2sp`kzhK$H^gU_`zp)KNzqK~!-|Do|0L(`oey5VBD%H#W-KNSI&nn7RzRHf)$ zE;HkdIYckuG@P%oX>llx-is8}Cxi$UpUemD!SLq$ZPp-G)-H^p!WKh@E3d8$%c}{O z&1x1e^o6*b*2aAiv+v0B@rGVGq{~=O+`2j0ruKwdyuoNR)Pvz3tVTN~pMwd)`QAhr4N3dK}zFulW&&l!&PV;AFq8=km0`>M!fQ8m#G^SGf zBax1y7Q2n+fm2}U=LksM>21-)1*n{4pRp;})XHw`^MqM;_6wAU6dTH{%?va_gQL#h zF;<{4`(>m)T3YB2pLr84weUTVr&Tg5Zw0vdOgfZ*^prZf`O5Vzjv$iG{zwWZfZJq< zFctzuIo7AF!zP_tta?wUX$Sx24EUuoXJx~FQ{|KQjpo{+=;qU?>A3bmka|r!et)KN zP?{V5-m4!m=G(B^5(-D>H*MKIkh_X5^2JpQ^7+wlnKP(t6gheOqOdUbU!tYtXUzbW zKQNj~CQ1=R9YV!gb;hEX?9#iUJ0R`41o7p8O;s}#9Y zoOSI+r>c2KZu)~&=n@$jP@CC!?TR6mYkSx)U}ZXs?g1z@KE% zz9l^|F>!2gFv_@re${2B`3-1m62cIHhJS}Ks!O30n4W_zL=@zaxpgyt*%o_8;k-EL zKb)pi&a<%TME%!RY|JbgBd(QfxMU1g_t+jTDN&r0F9`DuTKkM46LAJdEZJk&!l__w*1up(qCky_s zYUm$KgN~#NqVG^&jCy8d(;9pO_&?>s-R*dA$NYvWnCwj5 zSsH+UWk?{#PfCz&^!$a)FASql^px}+%iKmG34mIiehI?_eHIo9x^BH+QpM-}-?3Tg=@})9t%fGlK z!*gZ`{|D=hnpmihqC2on>%;*i<0Z`{@MGljdLWhz?4GYTVU@XJk=>vT3_@3#^O29s zX0%fK1F&nPPlhNGU%i4AV!MEe4f+Yv+jVeiD4vMFWopxusL%n;Q+g&HjAnSCQg6N} zV3W;5g}4PA63Eafqas2O=JxsdesRk7EQDuEp<}NBYb&IPJYa>BflqzaVBZZkL(eiD z`KrnViB3~Pi~5*|E02D8(rWC#+5&V-3z&;sp@0mZXF>OTg((|l2~-4U!R07UFJ6My z;R&_jl#3wyb=zU_7$^_U^Xi!x$+y8n8>e zuR!uk{)@aB7?y#w=n5rzm@tp-G2vy@Nk3BQV6t4;OZDJ--yo7!awT zeUl0#4eM3TC*tkDKjS>3uuX@0D)9SrE!DK$q>JT#tIbfW0eODy>n*H?i=$}I&32L9QgoH?aEm30u@RT zXXI(_@YCqbU%+iig4I-kCqpv;!=cso_Lu#p%D#md2W3N`xiRjZv7be}d{N#Kb*mM7 zR}5UbrdbHL_K^=MU>)L%bE-OI4Q4P}Ms9;5GUy%lro+!NSk*D4Uo&Mg5xrIpJiyG0 zZECV}EqUNw!UNGFhcF#!1~j`?DLKNg4^qiYcoDo47>%n;tF^gsog0Lca*)B(zp*_Q z5fM|n?;-Jon3|d@lWvlxyON=sYqKXJ@lLwSa6`m<&8=82X?LK)tUZzKjsRdI`jum6llo|*Zwjq(8e$dh|S@7?%p2A zgNp)wP5m|z7;GAr%?-*y3QAOgSdobAfj_E*s7LtYG$77A7s0<3EmSn{wCmF7<4eqG z1#y>HWJQsk_!AqZzdBqE*2&mt4V*Ff{i+g2dgUhG_7g*CorR9fDW*JXGE)_pHA8GM%KN@E6N zrKzsUlupw%xdPO9$*lfty2_)18nO;Bnt?4iF7Kkz3Anca!Yf^ICmv{er6AmZ)dZz-johy~ir=?*f-hjf3s_D!q};!XbKc z!_zJhh?;ojPawJ(x+`mYR2D;4ZuBiYt{nZCzp}6Hp+}FWWxn-&v?%-~gL=0y35sc{ zkAjJKVrWAYHHtiom&tduzMOg>>KLomX0xU5Palqu7;DkbpVZlg6%`5}NsaEIgW>L& zZ~x)mYs0ZFs)MWkOOymnpd6dQ+n1C0M=g$!eHSC`;V`jt4%r*?9lE6ulTcKyjd2ox zcOt>(47Ap6{LXC~e>#exV4E4!1%SPW`>>BV`(ng^KbzuwdeJ1Y(e5VKJ5+YT9_^|VHN?(e}1q7hJ6O7Q@P z*(@Y60q1onVUG`&f)8+*mi>|WFRVlDenh;jaFflFdj%HYDH%Gw6p$5<2$ut6PwDZV zj6=#M^dCHU*!dDD#Qx`M=-p<^A}@{1qNPi?{}b-0u@+ekIqmYTns_%n_Rty{HkE8l zs{j^b%Gi5^x(?WYfZ8Wy;wuBKXG4VnV!zgx)VKQ{TA?o|H?=}{3hZdva|B58hGJ}o z-VrTw=YNEPk8YLU{>|s(X~4tsJ8vXTo%WQy@vvzSBDjtk=FHIw-yCo%nPCUAHr7-f z)-+fShxXkPSjw=YQclL&#wxKAPJfT!qU9D~&zR?oqTYuFU8K>GWmJ65=Kzkhg?2X$ ztPdfE!mUAmXpo2@8&Dr0u+vDx-uUvB$v?l0kSP?6W2=CE(%j;};6d2|Eu6<6TOe&P z*k_Nb#P@ryR16LeXhaTCqv*}l?&(yrec(*xatPR=ImS79mp)|`JVkoNrVc+KI}Q2?M)fTby=o->h4 zo*TXVRk(05gibS}{j%Qn1?Pz)-Sf-oUy&bn4#qyl;ZGvwLk-!Ck!7V_1bL4;03kT* zv;xhL2MlEj)b*j8f(6pRrfm0DL7OUu2U zDL=n|q<|Ls>`Ev{L_E+Cu0S6T`G$NEByO;ugKHcprbO9bg@Q*?5OIS-o*GF4qJ{=( z(~v9+=9^it=!0McwRdn-OI7k1=(tJFo_`|mkLeq-YCm{7%xOvCay4w)C=(A(11od_ z)rm#-dpa0d@C8XG>-~Yf1@#M**$rJan0tlZe!GK)z_xpB#9&MTtPAznlF9vO0v&+R zP$wWX6;PLJ3&BxT{3*Km4YYt5eL2tR0ln(ofPd%(!8KV#-%Lfb2fGhF1yrVGue{Y* zggOQLL=BB7osq}EBL)na;CE#kdC~A-CRS~7m93a9W6W#Sv(0SD)Gt)1nx#=r7&n5a zvtv5iMrUq~2&VM7f-dJ;P9s=ympMSU1?a_LvHXSsY`$3+MfHU-=aFE$SPTHWZ}$V_ z=8DkZ@n3N=I;gb+S+J$5BO=R}M$#i{0b4tpZTz~0AVqNiidVgFM&i;4yygr8xxc`) zlsM8)**3MpfR~XZAcLrzc4al3tT@P3DiF9^5b>jP};q7-L6_aS3Uz76M>4K&oZQ;ba8@XFIh4+*i9AC zam`=IIID|8%tl*Iix+L5`n;fJ@M1(Ggy={r8j6wph3~}DjmlLpIV2V>L!oa*z{nj) zY8110xbVHvzL<=R3Tk#_yP|CaeYuRP0uL=@<6;-BfG z&`(B?AW)ExN?rKy`tNUWOe5bTT-GRRxso@#KK4lt-56|c312j-6$!D5l>Prz(*G|a z4!ztx*=uX`@)VZ_$rC^p_@(I=I;1It99(=O@ed&drwcS4!*iyqzp(d{N~de2s_SCJ z_&3}NfF;xHI}6e*8{=t^G1X><>h=4EkMPH}7@C3uQ$v zLE}#h{gc0=e7L{M<((VMx(tq5#(N&Oho?duo~Nz~YD<!PU_W-i3%PsCl!oJb(Bn@ zE%~30tfKNfJILeINVRyGqE?Z+J6IaZG85mV+Zd-eM>DqCVDBsZWTWgvGv=;9sfvAa zLFwIUWUJ1pL7F$3Ax8wA!-A34AKsiiA|HVRTUJg4?tFL+%lgkj!RCzT$XFj~{OE6r zD6-LH{VSU23$f1Jy+T2fE<*#O0Dm)E-FPd4<#bq0GNGG{_`^bVYL?jek1bSZV2TJn z4#Y5JJl6z(G#xU9h_R)MzMz;dN)buKuv4M>W}#vSr3rHX!UuI_8&)yRn?A8v8U1f8 z;;=k;Q1b=QDFbC-y`_P!s57AOcl8=Go{{cj5Pv3H8602m96zo`{k+*Sm(Mt099 z4#4C1$o~H6u}$p`7H)&_HKGIXprVdFrK10e9QojuKY}|kGMif0hY?HFW*O&(^@0YU z-}n_GtPPz%AA>rmN<%!=d>^8Lb5NEa?D{0hyi17hnxA83PMN6)tnrq*OP^jzB3rnouDpcFSQ3Q)3YQY)ZQWKn- z`dkXyVangvWEqRUvoif3R^%9Qd%X=Y2oQD*!m)WUmj{ChQr42>GaGlL1j#QkfeNm^ z(ofUGTGKe*9% z>9mW;dd*%7mtVUj1=C>7&rfMJ!^nfP3;k;Y2H3ad*fem8%Yk!Q~T?0_j4a?6k*|yBKXzO^}=-TasRK+@~AHel2%C||B~%o z_Y5q@I-Gy*>Hh|2e!yD%Kkb;R0}MT6d+>~u7q*EK!dhb zUC3DwaFNwS>?slv(U3qKxOuE$+};{lhYmZuy}0 zxxG%#flCLqY&0;asGt)MP%G>O9jVK)znOQhOd)Ix=K`GWUF)9oi;{Bvq3+oWeCJCf zv2752Fc05NKM8k}-K=$+$~XZu;4HA61Qqf2-_+PMtihPG=miBPG<$<)s^ooVvlX@I zu}BpIEF2nI@RUMTxQnbtFg9%l~k7+{RRdTz4^6`_7J?mBO$&SFV0$u|LnQoiMNsK zb;+Iv$X!zjmuCl+HI!Q?^cAWjUac9r=99vLy;ez~*dH4#?tv!^>8!{MyXdtvOGDqB z>@J}*b;INcw6FV2#O{DlngSilkYqKI1^%u>`}?(p9$gisD6%iOs<88=Ovsvr2Gx=O ztOFS2!)6-{D3ii|`W0s|ekUX9ME2*qEl94gM%F0garOdp5(Rqx2*d(abs)+i;G(q# zd^CNP&Uv%3JHZ)G5oY zQ{AwH7*kIo)k9s!`q?`il-N3q(8sswh~W)um?OganN{d2BDkXWO*^yf4wApTQ; z>3)LFJ1Gr?J3Bi!LgiomwnP3}l%cyWI>rb4?(BmIT#=b<*hiAzT)Oqb&+q7HAZ0X< zMPG=CS}0Pdf(}GMBcLr{jomoy2bsNq@WMk|FSJVcU-yWS@tkJ5)tWucl>)SZQ+xSG zTka%4&9$}u(BTOd4sQv4ZJuPub}|D1ByoBkWWzXgRF6XIBD8)p!rdJL6MiO@hoFiK zjza~JK)_S-X3Xgu7eR4Ydrqd8O-68?gCi~S;DidH`6(7Ogal@tfleR-RnVJ690r)e z>cV-VAcS*`!ncXmO`$!V41s)lBdTF`Ss4)s6v9h~7=IFdywfA6-*yR3cG2`)25$aZ z@5<0Q3eY(-lS_;_yuT!zwNzb#xypDU(8@)D$`ify)5P(FKwy7fj>5_LnS^y2WGvp{ zn9aL0JHX~W#dvKx%12txu1dHCSrLx6){geh`clpLR_h+juCPgdj#;&#Cb5Jejl;G!cc>flb&MeVTX={?&c z$0b4)Kk1N$dIxh#AypU|VVO1yywX&j+lja<^1TIf4h#;XKza#+S~Abt&p_Izqv3V6 zaOxEg9tQE(Ykl3wAVqs)UcXB;R?$|uU%X^5(17?NQX2&H_Re!Aix2(f@*R8SkQRi7 zEc8dJow_ddbEYUYZ?SdieCThX@Nm4^ba|#ct`|CVPwx)@WlKJ* z$tK;p_vjFa8R5rhHpQ2wWL(3>rtt*hz;}MdG}!pESb6IguHZ>THdAp^37tO*bMnMt zQ1zi4dG|Lemn%ejewi!YCaTqLo&g_T`@B{gt1q5uKLc z+*|zBV#RRp3Ga3^jRW;WFOzizh&>8c-#)^z`cdeQVN7w$nA;-i)R1bf#vf+=gf%RJ zaK37%Q6h&-M|g!4aIrW&Xb#{R7NpiRm_Y=)(JzM)&P~?>75!5lwXS z2>Tg9w66bre~>A)MeBsukU(ZCS!lJV7a5z-1aUeacy6dB%RBjVA4sU$2Cqel==Z^G zH{583lZB=a?Nv%#y}Gi036QEHQjQRlKi#`bDx25K|8*SvL~iKBt?6+jK;!fygfMFJ zdlN|x+S;<99xu)tuP?RLJd>_4yWC4+Bpz3Zc`hGV(aYR~n*kuLSk398d{@>ZhJDjP zb-`r5``9CL16BTtee6owR`;V-e+fpndVK{R&R3fshAuxp1K64uPQN=j9!QW!$Q#1_s(zKF6z6 zbDxt)KAf52@|Ul0;_+9i$l-~I*05%+?@2G%Fx)4i;0Uf5W#mFfq=Xi|W}71Z z)cvN*YpC&Cf2fDuvV$4srygpsaj*a84}&Sqz%1Yv7r&!9AJPSFD;SHmd_liEq!6$z z8KOpNJ@KLExR{y;51THli9&?JR-M-dw=mSci5(nt*X|}xcd(~O-rCTD0CN_6k`g)g zmb~s3`V*BDKk_|BQdJn&%S&&pT2P4-HH5xw&riDmb5>u$OKF(%zJ5k6$2nxKD!3ac zQsPX#G?X_5pI=7o^kC!GSKq@Z$5N10iYEQ!jY=O71qYKR^2JPK3d14xd=iBgLTT5v{p>l+B9emlHL2 zS#c|tok%PinFb1=M0?rs%$Hk<3Chaj{Bv*hjX3G*vHhZiZozj7d|el81K%QzylH}KUQcKV|7n+0?}SGK&{ zo6-{cnAmlUFPE6LOVk%Hzc+opKvy$ldD7}$-wl{{*BP;A*wc?Fco}nF5VazgoZued zY(k>MchmrDmbi~QD`4`rr-lEx>xND$=w!8s$ODgr@l`f@^GUIkNnnNA%MbU}RjD7| zbTFd=j%kYa*1o4%0ss&KyZVLXes6QF6)YUc-MhV7R`6eT&3J6+#zV^3z0TX@wG9o-C*cd_PqHtQwLlZ*H!FfhU?BqkVdlgjy|pwed- zG}u+TZX7!}^F68Ed4)G^RDj3n;Ohmv7n1ksyuI@o|5hPi$%;gP>ZD5vBZE~g6CMaMv^78#F;u9X|&1#E~M+`wlCMVp=U z^cQ^K+!;J*c(Oa{Sbwc_;_yFQp{rmfeq|+;XVuHxj$mOmx*gppPlxOjc zSWg+gT;4CiG?>mVU)P^cJ}rh4qcu93(DKTo^23TJ9t9oZL3S==ARRS4R#kH~U>kpq z=FEICk)&uE$C#aH%HMFNk zvo05IwuDY3I%`q)iL&)*Y?$IG42}{z4zZf~A2kU+yQdcl=8sa8FIZk^Nr) literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/medium_50x50_length.png b/BolonkinNM/experiment_results/medium_50x50_length.png new file mode 100644 index 0000000000000000000000000000000000000000..146dedc9d798372962f9ecee896bc6e631ffe6ca GIT binary patch literal 22216 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 H`cMBCLaNUc literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/medium_50x50_time.png b/BolonkinNM/experiment_results/medium_50x50_time.png new file mode 100644 index 0000000000000000000000000000000000000000..e99ecfc5abbeaea15c1c6ae03a7af152aa11e30a GIT binary patch literal 19918 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�g)$NRvn-@ykKk0gRAFh7iUX_N=u?X@rZKLZomv{9eM4hZrSk2G04FINP?QtVd-JL0Q z>2!3MEfKMX$ThzxctFAK+mb!idztj~5)`@+Iva8*-_kCCqgDlBbS(o?x5>Cr`Ynr@ zB7-CJRVg?#K7?wXv2B0o#=F7jWG5id1Bwjye~XD`RsarQ6@+k^iIGyE*X7^4 zbk(;H;V3eO#ZkmA6Vkf$DeLYapbCuWNH%6CW%R;Q6?YFVuRHrUAWLkhj#9&rlwFl( z;n{DPi>`tZcQ!~YDW#s`^2K8^V5BCe1e^noU%p5@xGFjUtdXjGZ)Yz5>%xKXc(4GB zzghy>tb!*M!Wk!kWv)LG3CZ4?%9IOKhDc}b23jws{gRzU*p?Lfg<|ptEtqK*BBXv6 zc#JPxdwTTrO!Zt_pGN5awcDdqbi&-_^vE~;6;P?d`Yf2g@ z>+`g#byHJ9s_PyHsBTq}*bL8%yNg3y%WruZNzQ&NgT9|6-M2^Be30qXKL&4om*)id zu60xB%(X!J7tz|tWWDKKO_0#R9#2*q6ysC64TZ&W_JIa+U%L$-Z zZP+Ix3L!GLOcyCEUTiRcx@v;s{iyx1n+e?~?AoT`J%Utl5+d@e%86q1^|_6Hgd? zrIqln{Uy9v!{dH5ujgU7{D3ZV*^#R0?yZM_^%b`K=GbAshwx-6N&j}9sAjzu&Z%ZR zF3#pU=Q2nRe{A43mKGVOg)HaMezB`zeQ)))1`T)9o)d#jVtlYVqFdn1?vgWL6(Si# znWoJs$_4kBfW3w1_>%@+YP3Eywdb0x zLb8SYl+wSrP?Q-AMywA8fnMiG-cSDFB3bAx=tx&l6lSMx38n2(h%c$jk4>j5vPmS0 zOfV#1Pa~k})xDfYue^`c@MJ7Jdo=y33+VLnS%Ee8{r6R7$)|u?$!h7gZb^#P=-<8u zZmUAV`ZWVE0rc1Bhmc%@K+jRbQOE7^ zO)xZ$BFp~i91A%E_nn~YsVzTInr%xcvFs0=Qq2xjT1AU>E7#2;mEJnvR7SlTUtdN& z>9bzyUS^NPUX~^m7>;y7;5Y7hNU!Y5qtR!75cWZw*E zI`?+x_NemvtmUrtF?}eh*$us$9w(_WASFw~BwSZN<5*8=;al}$_+>Psbr6$a`Y*Tr zi3RAkI=ZcHgsulouWMeqMC+IKr-7YX-?=D*wv}~_j~0VvlP=P?W4gRkEgn`2dGe`w zjh=gP;Ty{HZVDu6Y&ZOo{B8aV&YsByM<-sBHFI~n**LWoryha*(?%_Evk3k?#->&^ zbt<^iYz=OE3sPnj6$UWg0NIPTTV|Ni(+7Xvoz}(4ge8qvJIc?KKcPNSRFFEqgKd(9>s0R2;F0I6OM&3Zl0hm;5 zZ$Pkt)dlNq?qezCrw8S_k3g%{&kDk(_ZX)7KCf~ni#904&%)zq-=CbJrTd~=DEA|? z^;dT3T@{M^a?@-yKC7df16W!p<^5e|%ugBC7lH>)STRp zh99<`A#tFE4x1HsOQTvGhxCjh=Bm^P09Of1xXDru>&8jYkM0c{`3Y_Dz4d~Imx%r( z#sJOT^y$1aS$_z*_xJ~EW*LwtMoCc*;}t)3FBz!R=s0z0*~qU$NXIYD?+QyTbQT2+G^eK&3KY|&%kpbkAR7rmO^Ao<_&r=&HE zhpDit%w4QZTy+wpgz&V}O;ogdLJ&Q^464bMKnzwr;_ij>s|n9{X5hTO6}PQ@e+v(g z)O@kb&|cAAd7=3Fv>#JwP5BC>My_vefPi+XyZNXL^DA$r z+T#s|57a1fhUd%omhiiZFKFsgQ6Pm3*3mKSIG=moS9wkv8DBIaM4Wg^KlbS%jox)S zi-EGTsg#HUd5TPf8np>@HA)(PeY@0JRP+44KW7XQJb1@SU>E_T$6CTja+4b40gfwAl-nkrAPEs$0hySvCK20- zOc-0^jI=@_%9jhf`H*Y3IWfkz^ZUF61jzmfRv>Hh$xg#^z4 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/medium_50x50_visited.png b/BolonkinNM/experiment_results/medium_50x50_visited.png new file mode 100644 index 0000000000000000000000000000000000000000..a2b683dc4f096951d4a41d275991df8fa6ef8d09 GIT binary patch literal 25131 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/no_path_30x30_length.png b/BolonkinNM/experiment_results/no_path_30x30_length.png new file mode 100644 index 0000000000000000000000000000000000000000..cbd8be8c319431ba497d30e1d22e5c89664afad7 GIT binary patch literal 20521 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/no_path_30x30_time.png b/BolonkinNM/experiment_results/no_path_30x30_time.png new file mode 100644 index 0000000000000000000000000000000000000000..68a92e30891b45e4339d9b89c9556bdc245acd4a GIT binary patch literal 19403 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

ibmYq_do`18_(e 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/small_10x10_visited.png b/BolonkinNM/experiment_results/small_10x10_visited.png new file mode 100644 index 0000000000000000000000000000000000000000..98fe8896eae28e59b469f2e973bfb3236a470e87 GIT binary patch literal 17961 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/summary.csv b/BolonkinNM/experiment_results/summary.csv new file mode 100644 index 0000000..46a0412 --- /dev/null +++ b/BolonkinNM/experiment_results/summary.csv @@ -0,0 +1,25 @@ +maze,strategy,avg_time_ms,avg_visited_cells,avg_path_length,runs +small_10x10,BFS,0.025300,15.00,15.00,5 +small_10x10,DFS,0.023140,15.00,15.00,5 +small_10x10,A*,0.034280,15.00,15.00,5 +small_10x10,Dijkstra,0.029260,15.00,15.00,5 +medium_50x50,BFS,1.977280,1579.00,95.00,5 +medium_50x50,DFS,1.881440,1277.00,647.00,5 +medium_50x50,A*,2.217480,927.00,95.00,5 +medium_50x50,Dijkstra,3.476620,1579.00,95.00,5 +large_100x100,BFS,8.334260,5566.00,195.00,5 +large_100x100,DFS,5.458460,3543.00,1531.00,5 +large_100x100,A*,2.101660,853.00,195.00,5 +large_100x100,Dijkstra,15.535260,5571.00,195.00,5 +empty_30x30,BFS,1.179160,896.00,55.00,5 +empty_30x30,DFS,1.300420,842.00,815.00,5 +empty_30x30,A*,2.150400,784.00,55.00,5 +empty_30x30,Dijkstra,2.096140,896.00,55.00,5 +no_path_30x30,BFS,0.586180,450.00,0.00,5 +no_path_30x30,DFS,0.693360,450.00,0.00,5 +no_path_30x30,A*,1.126740,450.00,0.00,5 +no_path_30x30,Dijkstra,1.063260,450.00,0.00,5 +weighted_30x30,BFS,1.022180,788.00,55.00,5 +weighted_30x30,DFS,1.069640,693.00,479.00,5 +weighted_30x30,A*,0.372100,126.00,55.00,5 +weighted_30x30,Dijkstra,1.785560,781.00,55.00,5 diff --git a/BolonkinNM/experiment_results/weighted_30x30_length.png b/BolonkinNM/experiment_results/weighted_30x30_length.png new file mode 100644 index 0000000000000000000000000000000000000000..7c7e3b1735cb5af12a9db8b25ae8b51bfa1f1b8c GIT binary patch literal 21783 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%0A-1ay-BMB1LqxmbUu+I)OD1cf* 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 sLdiSm;$1)r95(`g{-fmiwM=6MrW42EYr`frU* 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 AqyPW_ literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/weighted_30x30_visited.png b/BolonkinNM/experiment_results/weighted_30x30_visited.png new file mode 100644 index 0000000000000000000000000000000000000000..3b02d70d7053b7a00e1a9a37213e2c8916adb4f7 GIT binary patch literal 25496 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 X%vXD}apn3BP@m7!)z4*}Q$iB}&&;LK literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiments.py b/BolonkinNM/experiments.py deleted file mode 100644 index f5face1..0000000 --- a/BolonkinNM/experiments.py +++ /dev/null @@ -1,172 +0,0 @@ -from __future__ import annotations - -import csv -import random -import time -from pathlib import Path -from typing import Dict, List, Tuple - -from linked_list import ll_insert, ll_find, ll_delete -from hash_table import ht_insert, ht_find, ht_delete -from bst import bst_insert, bst_find, bst_delete -from utils import generate_records, prepare_records_variants - - -Record = Tuple[str, str] - - -def make_missing_names(count: int = 10) -> List[str]: - return [f"None_{i}" for i in range(count)] - - -def pick_existing_names(records: List[Record], count: int, seed: int = 42) -> List[str]: - rng = random.Random(seed) - unique_names = list(dict.fromkeys(name for name, _ in records)) - if len(unique_names) < count: - raise ValueError(f"Not enough unique names: need {count}, got {len(unique_names)}") - return rng.sample(unique_names, count) - - -def pick_delete_names(records: List[Record], count: int = 50, seed: int = 43) -> List[str]: - rng = random.Random(seed) - unique_names = list(dict.fromkeys(name for name, _ in records)) - if len(unique_names) < count: - raise ValueError(f"Not enough unique names: need {count}, got {len(unique_names)}") - return rng.sample(unique_names, count) - - -def build_structure(structure_name: str, records: List[Record], buckets_count: int = 2048): - if structure_name == "linked_list": - structure = None - for name, phone in records: - structure = ll_insert(structure, name, phone) - return structure - - if structure_name == "hash_table": - buckets = [None] * buckets_count - for name, phone in records: - buckets = ht_insert(buckets, name, phone) - return buckets - - if structure_name == "bst": - root = None - for name, phone in records: - root = bst_insert(root, name, phone) - return root - - raise ValueError(f"Unknown structure: {structure_name}") - - -def do_find(structure_name: str, structure: object, existing_names: List[str], missing_names: List[str]) -> None: - if structure_name == "linked_list": - for name in existing_names: - ll_find(structure, name) - for name in missing_names: - ll_find(structure, name) - return - - if structure_name == "hash_table": - for name in existing_names: - ht_find(structure, name) - for name in missing_names: - ht_find(structure, name) - return - - if structure_name == "bst": - for name in existing_names: - bst_find(structure, name) - for name in missing_names: - bst_find(structure, name) - return - - raise ValueError(f"Unknown structure: {structure_name}") - - -def do_delete(structure_name: str, structure: object, delete_names: List[str]): - if structure_name == "linked_list": - for name in delete_names: - structure = ll_delete(structure, name) - return structure - - if structure_name == "hash_table": - for name in delete_names: - structure = ht_delete(structure, name) - return structure - - if structure_name == "bst": - for name in delete_names: - structure = bst_delete(structure, name) - return structure - - raise ValueError(f"Unknown structure: {structure_name}") - - -def measure_once(structure_name: str, records: List[Record], buckets_count: int = 2048) -> Dict[str, float]: - existing_names = pick_existing_names(records, 100, seed=42) - missing_names = make_missing_names(10) - delete_names = pick_delete_names(records, 50, seed=43) - - start = time.perf_counter() - structure = build_structure(structure_name, records, buckets_count=buckets_count) - insert_time = time.perf_counter() - start - - start = time.perf_counter() - do_find(structure_name, structure, existing_names, missing_names) - find_time = time.perf_counter() - start - - start = time.perf_counter() - structure = do_delete(structure_name, structure, delete_names) - delete_time = time.perf_counter() - start - - return {"insert": insert_time, "find": find_time, "delete": delete_time} - - -def run_experiments(n: int = 10000, buckets_count: int = 2048, repeats: int = 5): - records = generate_records(n, repeat_names=False) - records_shuffled, records_sorted = prepare_records_variants(records) - - datasets = [ - ("случайный", records_shuffled), - ("отсортированный", records_sorted), - ] - structures = [ - ("LinkedList", "linked_list"), - ("HashTable", "hash_table"), - ("BST", "bst"), - ] - operations = ("insert", "find", "delete") - - rows = [["Структура", "Режим", "Операция", "Замер", "Время (сек)"]] - - for mode_name, dataset_records in datasets: - for human_name, structure_name in structures: - times_by_op = {op: [] for op in operations} - - for attempt in range(1, repeats + 1): - result = measure_once(structure_name, dataset_records, buckets_count=buckets_count) - for op_name in operations: - elapsed = result[op_name] - times_by_op[op_name].append(elapsed) - rows.append([human_name, mode_name, op_name, attempt, f"{elapsed:.10f}"]) - - for op_name in operations: - avg_time = sum(times_by_op[op_name]) / len(times_by_op[op_name]) - rows.append([human_name, mode_name, op_name, "среднее", f"{avg_time:.10f}"]) - - return rows - - -def save_results_csv(rows, filename: str = "results.csv"): - with open(filename, "w", newline="", encoding="utf-8") as f: - writer = csv.writer(f) - writer.writerows(rows) - - -def main(): - rows = run_experiments(n=10000, buckets_count=2048, repeats=5) - save_results_csv(rows, "results.csv") - print("Saved results.csv") - - -if __name__ == "__main__": - main() diff --git a/BolonkinNM/hash_table.py b/BolonkinNM/hash_table.py deleted file mode 100644 index 9aa720d..0000000 --- a/BolonkinNM/hash_table.py +++ /dev/null @@ -1,44 +0,0 @@ - - -from typing import Any, Dict, List, Optional - -from linked_list import ll_insert, ll_find, ll_delete, ll_list_all - - -Bucket = Optional[Dict[str, Any]] - - -def _hash_name(name: str, buckets_count: int) -> int: - if buckets_count <= 0: - return 0 - return sum(ord(ch) for ch in name) % buckets_count - - -def ht_insert(buckets: List[Bucket], name: str, phone: str) -> List[Bucket]: - if not buckets: - return buckets - index = _hash_name(name, len(buckets)) - buckets[index] = ll_insert(buckets[index], name, phone) - return buckets - - -def ht_find(buckets: List[Bucket], name: str) -> Optional[str]: - if not buckets: - return None - index = _hash_name(name, len(buckets)) - return ll_find(buckets[index], name) - - -def ht_delete(buckets: List[Bucket], name: str) -> List[Bucket]: - if not buckets: - return buckets - index = _hash_name(name, len(buckets)) - buckets[index] = ll_delete(buckets[index], name) - return buckets - - -def ht_list_all(buckets: List[Bucket]) -> List[Dict[str, str]]: - records: List[Dict[str, str]] = [] - for head in buckets: - records.extend(ll_list_all(head)) - return sorted(records, key=lambda x: x["name"]) diff --git a/BolonkinNM/linked_list.py b/BolonkinNM/linked_list.py deleted file mode 100644 index 0260036..0000000 --- a/BolonkinNM/linked_list.py +++ /dev/null @@ -1,73 +0,0 @@ - - -from typing import Any, Dict, List, Optional - - -Node = Dict[str, Any] - - -def _make_node(name: str, phone: str) -> Node: - return {"name": name, "phone": phone, "next": None} - - -def sort_records(records: List[Dict[str, str]]) -> List[Dict[str, str]]: - - return sorted(records, key=lambda x: x["name"]) - - -def ll_insert(head: Optional[Node], name: str, phone: str) -> Node: - - new_node = _make_node(name, phone) - - if head is None: - return new_node - - current = head - while current is not None: - if current["name"] == name: - current["phone"] = phone - return head - if current["next"] is None: - current["next"] = new_node - return head - current = current["next"] - - return head - - -def ll_find(head: Optional[Node], name: str) -> Optional[str]: - current = head - while current is not None: - if current["name"] == name: - return current["phone"] - current = current["next"] - return None - - -def ll_delete(head: Optional[Node], name: str) -> Optional[Node]: - if head is None: - return None - - if head["name"] == name: - return head["next"] - - prev = head - current = head["next"] - - while current is not None: - if current["name"] == name: - prev["next"] = current["next"] - return head - prev = current - current = current["next"] - - return head - - -def ll_list_all(head: Optional[Node]) -> List[Dict[str, str]]: - records: List[Dict[str, str]] = [] - current = head - while current is not None: - records.append({"name": current["name"], "phone": current["phone"]}) - current = current["next"] - return sort_records(records) diff --git a/BolonkinNM/main.py b/BolonkinNM/main.py index 70de618..08f22c7 100644 --- a/BolonkinNM/main.py +++ b/BolonkinNM/main.py @@ -1,21 +1,59 @@ +from builders.text_file_maze_builder import TextFileMazeBuilder +from core.player import Player +from observer.console_view import ConsoleView +from solver.maze_solver import MazeSolver +from strategies.astar_strategy import AStarStrategy +from strategies.bfs_strategy import BFSStrategy +from strategies.dfs_strategy import DFSStrategy +from controller.game_controller import GameController -from __future__ import annotations - -import csv from pathlib import Path -from experiments import run_experiments, save_results_csv -from plot_results import build_graphs, load_average_results +BASE_DIR = Path(__file__).resolve().parent -def main(): - rows = run_experiments(n=10000, buckets_count=2048, repeats=5) - save_results_csv(rows, "results.csv") - averaged = load_average_results("results.csv") - build_graphs(averaged, output_dir="docs/data") - print("Done.") +def run_demo(): + builder = TextFileMazeBuilder() + maze = builder.buildFromFile(str(BASE_DIR / "mazes" / "maze_small.txt")) + + view = ConsoleView() + view.update({"type": "maze_loaded", "message": "Maze loaded"}) + view.render(maze) + + solver = MazeSolver(maze) + solver.addObserver(view) + + for strategy in (BFSStrategy(), DFSStrategy(), AStarStrategy()): + solver.setStrategy(strategy) + stats = solver.solve() + + print() + print(f"=== {strategy.name} ===") + print(f"Time: {stats.timeMs:.3f} ms") + print(f"Visited cells: {stats.visitedCells}") + print(f"Path length: {stats.pathLength}") + print(f"Path found: {'yes' if stats.found else 'no'}") + + view.render(maze, path=stats.path) + + player = Player(maze.startCell) + controller = GameController(maze, player, view) + + print("Manual mode: W/A/S/D move, Z undo, Q quit") + view.render(maze, player_position=player.currentCell) + + while True: + cmd = input("Command: ").strip().upper() + if cmd == "Q": + break + if cmd == "Z": + controller.undo() + elif cmd in {"W", "A", "S", "D"}: + controller.move(cmd) + else: + print("Unknown command") if __name__ == "__main__": - main() + run_demo() diff --git a/BolonkinNM/mazes/maze_empty.txt b/BolonkinNM/mazes/maze_empty.txt new file mode 100644 index 0000000..8267fd0 --- /dev/null +++ b/BolonkinNM/mazes/maze_empty.txt @@ -0,0 +1,9 @@ +S + + + + + + + + E diff --git a/BolonkinNM/mazes/maze_large.txt b/BolonkinNM/mazes/maze_large.txt new file mode 100644 index 0000000..eb03326 --- /dev/null +++ b/BolonkinNM/mazes/maze_large.txt @@ -0,0 +1,11 @@ +#################################################################################################### +#S # # # # # # # # # # # # # # # E# +# # ### ### # ###### # ### # ## # #### # ####### # #### # # ### ## # ## # # ## # ## # ##### ### ## +# # # # # # # # # # # # # # # # # # # # # # # # # # # +# ##### # ######## # ### # ## # #### # ####### ## ### # # #### ####### ## ####### ####### # ### ## +# # # # # # # # # # # # # # # # # # # # # +### # # ###### # ########### ########### ### ####### # ####### ### # # ###### # ### ### # ### #### +# # # # # # # # # # # # # # # # # # # # # # +# ### ###### # ##### # ### # ####### # ### ### ## # ###### # ### # ### ###### # ### # ### ### ## # +# # # # # # # # # +#################################################################################################### diff --git a/BolonkinNM/mazes/maze_medium.txt b/BolonkinNM/mazes/maze_medium.txt new file mode 100644 index 0000000..67ecd65 --- /dev/null +++ b/BolonkinNM/mazes/maze_medium.txt @@ -0,0 +1,11 @@ +################################################## +#S # # # # # # E# +# # ### ### # ###### # ### # ## # #### # ####### ## +# # # # # # # # # # # # # # +# ##### # ######## # ### # ## # #### # ####### ## # +# # # # # # # # # # +### # # ###### # ########### ########### ### ###### +# # # # # # # # # # # +# ### ###### # ##### # ### # ####### # ### ### ## # +# # # # # +################################################## diff --git a/BolonkinNM/mazes/maze_no_path.txt b/BolonkinNM/mazes/maze_no_path.txt new file mode 100644 index 0000000..9633160 --- /dev/null +++ b/BolonkinNM/mazes/maze_no_path.txt @@ -0,0 +1,9 @@ +########## +#S # +# ###### # +# # # +########## +# #E# +# ###### # +# # +########## diff --git a/BolonkinNM/mazes/maze_small.txt b/BolonkinNM/mazes/maze_small.txt new file mode 100644 index 0000000..e829a58 --- /dev/null +++ b/BolonkinNM/mazes/maze_small.txt @@ -0,0 +1,7 @@ +########## +#S #E# +# ## # # ## +# # # +# #### # # +# # # +########## diff --git a/BolonkinNM/mazes/maze_weighted.txt b/BolonkinNM/mazes/maze_weighted.txt new file mode 100644 index 0000000..be8718d --- /dev/null +++ b/BolonkinNM/mazes/maze_weighted.txt @@ -0,0 +1,10 @@ +1111111111111111111111111111 +1S11111111111111111111111111 +1111111111111111111111111111 +1111111111111111111111111111 +1111111111111222222222222111 +1111111111111222222222222111 +1111111111111333333333333111 +1111111111111333333333333111 +111111111111111111111111111E +1111111111111111111111111111 diff --git a/BolonkinNM/observer/__init__.py b/BolonkinNM/observer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BolonkinNM/observer/console_view.py b/BolonkinNM/observer/console_view.py new file mode 100644 index 0000000..77248a5 --- /dev/null +++ b/BolonkinNM/observer/console_view.py @@ -0,0 +1,26 @@ +import os +from observer.observer import Observer + + +class ConsoleView(Observer): + def update(self, event): + if isinstance(event, str): + print(f"[EVENT] {event}") + elif isinstance(event, dict): + event_type = event.get("type", "unknown") + if event_type == "search_finished": + stats = event.get("stats") + print(f"[EVENT] search finished: {stats}") + else: + print(f"[EVENT] {event_type}: {event}") + else: + print("[EVENT] unknown") + + def clear(self): + os.system("cls" if os.name == "nt" else "clear") + + def render(self, maze, player_position=None, path=None, clear_screen=False): + if clear_screen: + self.clear() + print(maze.render(player_position=player_position, path=path)) + print() diff --git a/BolonkinNM/observer/observer.py b/BolonkinNM/observer/observer.py new file mode 100644 index 0000000..0ccca59 --- /dev/null +++ b/BolonkinNM/observer/observer.py @@ -0,0 +1,7 @@ +from abc import ABC, abstractmethod + + +class Observer(ABC): + @abstractmethod + def update(self, event): + raise NotImplementedError diff --git a/BolonkinNM/plot_results.py b/BolonkinNM/plot_results.py deleted file mode 100644 index f4f3b6c..0000000 --- a/BolonkinNM/plot_results.py +++ /dev/null @@ -1,60 +0,0 @@ - - -from __future__ import annotations - -import csv -from collections import defaultdict -from pathlib import Path - -import matplotlib.pyplot as plt - - -def load_average_results(csv_file: str): - results = [] - with open(csv_file, "r", encoding="utf-8") as f: - reader = csv.DictReader(f) - for row in reader: - if row["Замер"] != "среднее": - continue - results.append({ - "structure": row["Структура"], - "mode": row["Режим"], - "operation": row["Операция"], - "time": float(row["Время (сек)"]), - }) - return results - - -def build_graphs(results, output_dir: str = "docs/data"): - output = Path(output_dir) - output.mkdir(parents=True, exist_ok=True) - - grouped = defaultdict(list) - for row in results: - grouped[row["operation"]].append(row) - - for operation in ("insert", "find", "delete"): - rows = grouped[operation] - labels = [f"{r['structure']}\n{r['mode']}" for r in rows] - values = [r["time"] for r in rows] - - plt.figure(figsize=(11, 6)) - plt.bar(labels, values) - plt.title(f"{operation.capitalize()} comparison") - plt.xlabel("Structure / data order") - plt.ylabel("Time, seconds") - plt.xticks(rotation=20) - plt.tight_layout() - filename = output / f"{operation}.png" - plt.savefig(filename, dpi=160) - plt.close() - print(f"Saved {filename}") - - -def main(): - results = load_average_results("results.csv") - build_graphs(results) - - -if __name__ == "__main__": - main() diff --git a/BolonkinNM/requirements.txt b/BolonkinNM/requirements.txt index a9006fd..6ccafc3 100644 --- a/BolonkinNM/requirements.txt +++ b/BolonkinNM/requirements.txt @@ -1 +1 @@ -matplotlib>=3.8 +matplotlib diff --git a/BolonkinNM/results.csv b/BolonkinNM/results.csv deleted file mode 100644 index cc67b71..0000000 --- a/BolonkinNM/results.csv +++ /dev/null @@ -1,109 +0,0 @@ -Структура,Режим,Операция,Замер,Время (сек) -LinkedList,случайный,insert,1,2.4210275000 -LinkedList,случайный,find,1,0.0214394000 -LinkedList,случайный,delete,1,0.0108667000 -LinkedList,случайный,insert,2,2.4208055000 -LinkedList,случайный,find,2,0.0216110000 -LinkedList,случайный,delete,2,0.0106216000 -LinkedList,случайный,insert,3,2.4210881000 -LinkedList,случайный,find,3,0.0216503000 -LinkedList,случайный,delete,3,0.0106497000 -LinkedList,случайный,insert,4,2.4530798000 -LinkedList,случайный,find,4,0.0222764000 -LinkedList,случайный,delete,4,0.0108350000 -LinkedList,случайный,insert,5,2.4567773000 -LinkedList,случайный,find,5,0.0219400000 -LinkedList,случайный,delete,5,0.0108697000 -LinkedList,случайный,insert,среднее,2.4345556400 -LinkedList,случайный,find,среднее,0.0217834200 -LinkedList,случайный,delete,среднее,0.0107685400 -HashTable,случайный,insert,1,0.1621210000 -HashTable,случайный,find,1,0.0011201000 -HashTable,случайный,delete,1,0.0005854000 -HashTable,случайный,insert,2,0.1732676000 -HashTable,случайный,find,2,0.0011247000 -HashTable,случайный,delete,2,0.0005818000 -HashTable,случайный,insert,3,0.1638609000 -HashTable,случайный,find,3,0.0011355000 -HashTable,случайный,delete,3,0.0005814000 -HashTable,случайный,insert,4,0.1642886000 -HashTable,случайный,find,4,0.0011268000 -HashTable,случайный,delete,4,0.0005785000 -HashTable,случайный,insert,5,0.1640916000 -HashTable,случайный,find,5,0.0011287000 -HashTable,случайный,delete,5,0.0005787000 -HashTable,случайный,insert,среднее,0.1655259400 -HashTable,случайный,find,среднее,0.0011271600 -HashTable,случайный,delete,среднее,0.0005811600 -BST,случайный,insert,1,0.0153754000 -BST,случайный,find,1,0.0001491000 -BST,случайный,delete,1,0.0000786000 -BST,случайный,insert,2,0.0155821000 -BST,случайный,find,2,0.0001453000 -BST,случайный,delete,2,0.0000724000 -BST,случайный,insert,3,0.0151360000 -BST,случайный,find,3,0.0001437000 -BST,случайный,delete,3,0.0000741000 -BST,случайный,insert,4,0.0153703000 -BST,случайный,find,4,0.0001425000 -BST,случайный,delete,4,0.0000715000 -BST,случайный,insert,5,0.0153753000 -BST,случайный,find,5,0.0001455000 -BST,случайный,delete,5,0.0000723000 -BST,случайный,insert,среднее,0.0153678200 -BST,случайный,find,среднее,0.0001452200 -BST,случайный,delete,среднее,0.0000737800 -LinkedList,отсортированный,insert,1,2.5884851000 -LinkedList,отсортированный,find,1,0.0227221000 -LinkedList,отсортированный,delete,1,0.0111309000 -LinkedList,отсортированный,insert,2,2.5095731000 -LinkedList,отсортированный,find,2,0.0217208000 -LinkedList,отсортированный,delete,2,0.0107773000 -LinkedList,отсортированный,insert,3,2.5642096000 -LinkedList,отсортированный,find,3,0.0228242000 -LinkedList,отсортированный,delete,3,0.0115945000 -LinkedList,отсортированный,insert,4,2.7163021000 -LinkedList,отсортированный,find,4,0.0431456000 -LinkedList,отсортированный,delete,4,0.0136020000 -LinkedList,отсортированный,insert,5,2.6891794000 -LinkedList,отсортированный,find,5,0.0217679000 -LinkedList,отсортированный,delete,5,0.0106384000 -LinkedList,отсортированный,insert,среднее,2.6135498600 -LinkedList,отсортированный,find,среднее,0.0264361200 -LinkedList,отсортированный,delete,среднее,0.0115486200 -HashTable,отсортированный,insert,1,0.1524640000 -HashTable,отсортированный,find,1,0.0014973000 -HashTable,отсортированный,delete,1,0.0006991000 -HashTable,отсортированный,insert,2,0.1537592000 -HashTable,отсортированный,find,2,0.0012225000 -HashTable,отсортированный,delete,2,0.0006561000 -HashTable,отсортированный,insert,3,0.1555816000 -HashTable,отсортированный,find,3,0.0012080000 -HashTable,отсортированный,delete,3,0.0006472000 -HashTable,отсортированный,insert,4,0.1546417000 -HashTable,отсортированный,find,4,0.0015017000 -HashTable,отсортированный,delete,4,0.0007512000 -HashTable,отсортированный,insert,5,0.1531659000 -HashTable,отсортированный,find,5,0.0012219000 -HashTable,отсортированный,delete,5,0.0006493000 -HashTable,отсортированный,insert,среднее,0.1539224800 -HashTable,отсортированный,find,среднее,0.0013302800 -HashTable,отсортированный,delete,среднее,0.0006805800 -BST,отсортированный,insert,1,4.5025059000 -BST,отсортированный,find,1,0.0387267000 -BST,отсортированный,delete,1,0.0162161000 -BST,отсортированный,insert,2,4.6704081000 -BST,отсортированный,find,2,0.0435012000 -BST,отсортированный,delete,2,0.0203211000 -BST,отсортированный,insert,3,6.2192950000 -BST,отсортированный,find,3,0.0578654000 -BST,отсортированный,delete,3,0.0327529000 -BST,отсортированный,insert,4,4.7844525000 -BST,отсортированный,find,4,0.0380228000 -BST,отсортированный,delete,4,0.0159740000 -BST,отсортированный,insert,5,4.4861403000 -BST,отсортированный,find,5,0.0382484000 -BST,отсортированный,delete,5,0.0159402000 -BST,отсортированный,insert,среднее,4.9325603600 -BST,отсортированный,find,среднее,0.0432729000 -BST,отсортированный,delete,среднее,0.0202408600 diff --git a/BolonkinNM/solver/__init__.py b/BolonkinNM/solver/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BolonkinNM/solver/maze_solver.py b/BolonkinNM/solver/maze_solver.py new file mode 100644 index 0000000..7894661 --- /dev/null +++ b/BolonkinNM/solver/maze_solver.py @@ -0,0 +1,50 @@ +import time +from core.search_stats import SearchStats + + +class MazeSolver: + def __init__(self, maze, strategy=None): + self.maze = maze + self.strategy = strategy + self.observers = [] + + def setStrategy(self, strategy): + self.strategy = strategy + + def addObserver(self, observer): + if observer not in self.observers: + self.observers.append(observer) + + def removeObserver(self, observer): + if observer in self.observers: + self.observers.remove(observer) + + def notify(self, event): + for observer in self.observers: + observer.update(event) + + def solve(self): + if self.strategy is None: + raise ValueError("Strategy is not set") + self.notify({"type": "search_started", "strategy": self.strategy.name}) + + start_time = time.perf_counter() + path = self.strategy.findPath(self.maze, self.maze.startCell, self.maze.exitCell) + end_time = time.perf_counter() + + stats = SearchStats( + timeMs=(end_time - start_time) * 1000.0, + visitedCells=getattr(self.strategy, "visitedCount", 0), + pathLength=len(path), + path=path, + found=bool(path), + algorithm=getattr(self.strategy, "name", "") + ) + + if stats.found: + self.notify({"type": "path_found", "strategy": stats.algorithm, "length": stats.pathLength}) + else: + self.notify({"type": "path_not_found", "strategy": stats.algorithm}) + + self.notify({"type": "search_finished", "stats": stats}) + return stats diff --git a/BolonkinNM/strategies/__init__.py b/BolonkinNM/strategies/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BolonkinNM/strategies/astar_strategy.py b/BolonkinNM/strategies/astar_strategy.py new file mode 100644 index 0000000..4da5535 --- /dev/null +++ b/BolonkinNM/strategies/astar_strategy.py @@ -0,0 +1,45 @@ +import heapq +from strategies.pathfinding_strategy import PathFindingStrategy + + +class AStarStrategy(PathFindingStrategy): + name = "A*" + + def heuristic(self, cell, exitCell): + return abs(cell.x - exitCell.x) + abs(cell.y - exitCell.y) + + def findPath(self, maze, start, exitCell): + self.visitedCount = 0 + if start is None or exitCell is None: + return [] + + open_set = [] + heapq.heappush(open_set, (0, 0, start.x, start.y, start)) + parent = {} + g_score = {(start.x, start.y): 0} + closed = set() + + while open_set: + f_score, current_g, _, _, current = heapq.heappop(open_set) + pos = (current.x, current.y) + + if pos in closed: + continue + + closed.add(pos) + self.visitedCount += 1 + + if current.x == exitCell.x and current.y == exitCell.y: + return self._restore_path(parent, start, exitCell) + + for neighbor in maze.getNeighbors(current): + npos = (neighbor.x, neighbor.y) + tentative_g = current_g + getattr(neighbor, "weight", 1) + + if tentative_g < g_score.get(npos, float("inf")): + g_score[npos] = tentative_g + parent[npos] = current + new_f = tentative_g + self.heuristic(neighbor, exitCell) + heapq.heappush(open_set, (new_f, tentative_g, neighbor.x, neighbor.y, neighbor)) + + return [] diff --git a/BolonkinNM/strategies/bfs_strategy.py b/BolonkinNM/strategies/bfs_strategy.py new file mode 100644 index 0000000..7a98b50 --- /dev/null +++ b/BolonkinNM/strategies/bfs_strategy.py @@ -0,0 +1,31 @@ +from collections import deque +from strategies.pathfinding_strategy import PathFindingStrategy + + +class BFSStrategy(PathFindingStrategy): + name = "BFS" + + def findPath(self, maze, start, exitCell): + self.visitedCount = 0 + if start is None or exitCell is None: + return [] + + queue = deque([start]) + visited = {(start.x, start.y)} + parent = {} + + while queue: + current = queue.popleft() + self.visitedCount += 1 + + if current.x == exitCell.x and current.y == exitCell.y: + return self._restore_path(parent, start, exitCell) + + for neighbor in maze.getNeighbors(current): + pos = (neighbor.x, neighbor.y) + if pos not in visited: + visited.add(pos) + parent[pos] = current + queue.append(neighbor) + + return [] diff --git a/BolonkinNM/strategies/dfs_strategy.py b/BolonkinNM/strategies/dfs_strategy.py new file mode 100644 index 0000000..36451b3 --- /dev/null +++ b/BolonkinNM/strategies/dfs_strategy.py @@ -0,0 +1,35 @@ +from strategies.pathfinding_strategy import PathFindingStrategy + + +class DFSStrategy(PathFindingStrategy): + name = "DFS" + + def findPath(self, maze, start, exitCell): + self.visitedCount = 0 + if start is None or exitCell is None: + return [] + + stack = [start] + visited = set() + parent = {} + + while stack: + current = stack.pop() + pos = (current.x, current.y) + if pos in visited: + continue + + visited.add(pos) + self.visitedCount += 1 + + if current.x == exitCell.x and current.y == exitCell.y: + return self._restore_path(parent, start, exitCell) + + neighbors = maze.getNeighbors(current) + for neighbor in reversed(neighbors): + npos = (neighbor.x, neighbor.y) + if npos not in visited: + parent[npos] = current + stack.append(neighbor) + + return [] diff --git a/BolonkinNM/strategies/dijkstra_strategy.py b/BolonkinNM/strategies/dijkstra_strategy.py new file mode 100644 index 0000000..fd3163f --- /dev/null +++ b/BolonkinNM/strategies/dijkstra_strategy.py @@ -0,0 +1,41 @@ +import heapq +from strategies.pathfinding_strategy import PathFindingStrategy + + +class DijkstraStrategy(PathFindingStrategy): + name = "Dijkstra" + + def findPath(self, maze, start, exitCell): + self.visitedCount = 0 + if start is None or exitCell is None: + return [] + + pq = [(0, start.x, start.y, start)] + dist = {(start.x, start.y): 0} + parent = {} + closed = set() + + while pq: + current_cost, _, _, current = heapq.heappop(pq) + pos = (current.x, current.y) + + if pos in closed: + continue + + closed.add(pos) + self.visitedCount += 1 + + if current.x == exitCell.x and current.y == exitCell.y: + return self._restore_path(parent, start, exitCell) + + for neighbor in maze.getNeighbors(current): + npos = (neighbor.x, neighbor.y) + step_cost = getattr(neighbor, "weight", 1) + new_cost = current_cost + step_cost + + if new_cost < dist.get(npos, float("inf")): + dist[npos] = new_cost + parent[npos] = current + heapq.heappush(pq, (new_cost, neighbor.x, neighbor.y, neighbor)) + + return [] diff --git a/BolonkinNM/strategies/pathfinding_strategy.py b/BolonkinNM/strategies/pathfinding_strategy.py new file mode 100644 index 0000000..17b3ee4 --- /dev/null +++ b/BolonkinNM/strategies/pathfinding_strategy.py @@ -0,0 +1,30 @@ +from abc import ABC, abstractmethod + + +class PathFindingStrategy(ABC): + name = "Base" + + def __init__(self): + self.visitedCount = 0 + + @abstractmethod + def findPath(self, maze, start, exitCell): + raise NotImplementedError + + def _restore_path(self, parent, start, exitCell): + if exitCell is None or start is None: + return [] + + path = [] + current = exitCell + + while True: + path.append(current) + if current.x == start.x and current.y == start.y: + break + current = parent.get((current.x, current.y)) + if current is None: + return [] + + path.reverse() + return path diff --git a/BolonkinNM/utils.py b/BolonkinNM/utils.py deleted file mode 100644 index 0fcb993..0000000 --- a/BolonkinNM/utils.py +++ /dev/null @@ -1,35 +0,0 @@ -import random -from typing import List, Tuple - - -Record = Tuple[str, str] - - -def generate_records(n: int, repeat_names: bool = False, seed: int = 42) -> List[Record]: - rng = random.Random(seed) - records: List[Record] = [] - - if repeat_names: - name_pool = [ - "User_Alex", "User_Bob", "User_Cat", "User_Dan", "User_Eva", - "User_Fox", "User_Geo", "User_Hen", "User_Ira", "User_Leo", - ] - for _ in range(n): - name = rng.choice(name_pool) - phone = f"{rng.randint(1000000000, 9999999999)}" - records.append((name, phone)) - else: - for i in range(n): - name = f"User_{i:05d}" - phone = f"{1000000000 + i}" - records.append((name, phone)) - - return records - - -def prepare_records_variants(records: List[Record], seed: int = 42): - rng = random.Random(seed) - records_shuffled = list(records) - rng.shuffle(records_shuffled) - records_sorted = sorted(records, key=lambda x: x[0]) - return records_shuffled, records_sorted

~ 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/no_path_30x30_visited.png b/BolonkinNM/experiment_results/no_path_30x30_visited.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc5a636968f5fb5915d86b987ddf830a7a721d0 GIT binary patch literal 19961 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 literal 0 HcmV?d00001 diff --git a/BolonkinNM/experiment_results/small_10x10_time.png b/BolonkinNM/experiment_results/small_10x10_time.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf10e14d74a8e918f924d48b50b5ff1f0284e06 GIT binary patch literal 24362 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%0A&OD%*jA6bk{|PR-TukiC^hx5jrD=c) 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