{ "cells": [ { "cell_type": "code", "execution_count": 16, "id": "4dbe48b6", "metadata": {}, "outputs": [], "source": [ "from source.builder import TextFileMazeBuilder\n", "from source.observer import ConsoleView, Event\n", "from source.strategy import MazeSolver, BFS, DFS, Dijkstra, AStar\n", "# from source.strategy.maze_solver import \n", "from source.classes import Cell\n", "# from source.strategy import " ] }, { "cell_type": "code", "execution_count": 17, "id": "007bf97a", "metadata": {}, "outputs": [], "source": [ "test_lab = './mazes/tests/test_lab.txt'\n", "test_lab2 = './mazes/tests/test_lab2.txt'\n", "test_lab3 = './mazes/tests/test_lab3.txt'\n", "test_lab4 = './mazes/tests/test_lab20x20.txt'\n", "test_labNoPath = './mazes/tests/test_labNoPath.txt'\n", "test_lab5 = './mazes/tests/test_lab100.txt'" ] }, { "cell_type": "code", "execution_count": 18, "id": "4489fc7e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "S # #####\n", "## # # E#\n", "# # ###\n", "### ## # #\n", "# #\n", "##########\n" ] } ], "source": [ "with open(test_lab) as f:\n", " data = f.readlines()\n", " for el in data:\n", " print(el.rstrip())" ] }, { "cell_type": "code", "execution_count": 19, "id": "fde1eddb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "S # #####\n", "## # # E#\n", "# # ###\n", "### ## # #\n", "# #\n", "##########\n" ] } ], "source": [ "\n", "\n", "builder = TextFileMazeBuilder()\n", "maze = builder.buildFromFile(filename=test_lab)\n", "\n", "maze.printer()" ] }, { "cell_type": "code", "execution_count": 20, "id": "22325f68", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Загружен лабиринт:\n", "S.P# #####\n", "## # # E#\n", "# # ###\n", "### ## # #\n", "# #\n", "##########\n" ] } ], "source": [ "\n", "# from source.observer.observer import \n", "\n", "view = ConsoleView()\n", "view.update(Event(\n", " event=\"maze_loaded\",\n", " maze=maze,\n", " player_position=(2, 0),\n", " path=[(0, 0), (1, 0)]\n", "))" ] }, { "cell_type": "code", "execution_count": 21, "id": "19840429", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Путь найден:\n", "S..# #####\n", "##.# #..E#\n", "# .. #.###\n", "###.##.# #\n", "# .... #\n", "##########\n" ] }, { "data": { "text/plain": [ "([(2, 1), (1, 0)],\n", " [(0, 0),\n", " (1, 0),\n", " (2, 0),\n", " (2, 1),\n", " (2, 2),\n", " (3, 2),\n", " (3, 3),\n", " (3, 4),\n", " (4, 4),\n", " (5, 4),\n", " (6, 4),\n", " (6, 3),\n", " (6, 2),\n", " (6, 1),\n", " (7, 1),\n", " (8, 1)])" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solver = MazeSolver(maze, DFS(), ConsoleView())\n", "stats = solver.solve()\n", "\n", "[cord.getXY() for cord in maze.getNeighbors(cell=Cell(2, 0))], [cord.getXY() for cord in stats.path]" ] }, { "cell_type": "code", "execution_count": 22, "id": "73ba37a8", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Путь найден:\n", "S..# #####\n", "##.# #..E#\n", "# .. #.###\n", "###.##.# #\n", "# .... #\n", "##########\n" ] }, { "data": { "text/plain": [ "([(2, 1), (1, 0)],\n", " [(0, 0),\n", " (1, 0),\n", " (2, 0),\n", " (2, 1),\n", " (2, 2),\n", " (3, 2),\n", " (3, 3),\n", " (3, 4),\n", " (4, 4),\n", " (5, 4),\n", " (6, 4),\n", " (6, 3),\n", " (6, 2),\n", " (6, 1),\n", " (7, 1),\n", " (8, 1)])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "solver = MazeSolver(maze, BFS(), ConsoleView())\n", "stats = solver.solve()\n", "\n", "[cord.getXY() for cord in maze.getNeighbors(cell=Cell(2, 0))], [cord.getXY() for cord in stats.path]" ] }, { "cell_type": "code", "execution_count": 23, "id": "857c5c04", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0\n", "2\n", "1\n", "3\n", "4\n" ] }, { "data": { "text/plain": [ "{'0', '1', '2', '3', '4'}" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def dfs(graph, start, visited=None):\n", " if visited is None:\n", " visited = set()\n", " visited.add(start)\n", "\n", " print(start)\n", "\n", " for next in graph[start] - visited:\n", " dfs(graph, next, visited)\n", " return visited\n", "\n", "\n", "graph = {'0': set(['1', '2']),\n", " '1': set(['0', '3', '4']),\n", " '2': set(['0']),\n", " '3': set(['1']),\n", " '4': set(['2', '3'])}\n", "\n", "dfs(graph, '0')" ] }, { "cell_type": "code", "execution_count": 24, "id": "9a5ea5cb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Размер: 10x6\n", "(0,0): wall=False, start=True, exit=False\n", "(1,0): wall=False, start=False, exit=False\n", "(2,0): wall=False, start=False, exit=False\n", "(3,0): wall=True, start=False, exit=False\n", "(4,0): wall=False, start=False, exit=False\n", "(5,0): wall=True, start=False, exit=False\n", "(6,0): wall=True, start=False, exit=False\n", "(7,0): wall=True, start=False, exit=False\n", "(8,0): wall=True, start=False, exit=False\n", "(9,0): wall=True, start=False, exit=False\n", "(0,1): wall=True, start=False, exit=False\n", "(1,1): wall=True, start=False, exit=False\n", "(2,1): wall=False, start=False, exit=False\n", "(3,1): wall=True, start=False, exit=False\n", "(4,1): wall=False, start=False, exit=False\n", "(5,1): wall=True, start=False, exit=False\n", "(6,1): wall=False, start=False, exit=False\n", "(7,1): wall=False, start=False, exit=False\n", "(8,1): wall=False, start=False, exit=True\n", "(9,1): wall=True, start=False, exit=False\n", "(0,2): wall=True, start=False, exit=False\n", "(1,2): wall=False, start=False, exit=False\n", "(2,2): wall=False, start=False, exit=False\n", "(3,2): wall=False, start=False, exit=False\n", "(4,2): wall=False, start=False, exit=False\n", "(5,2): wall=True, start=False, exit=False\n", "(6,2): wall=False, start=False, exit=False\n", "(7,2): wall=True, start=False, exit=False\n", "(8,2): wall=True, start=False, exit=False\n", "(9,2): wall=True, start=False, exit=False\n", "(0,3): wall=True, start=False, exit=False\n", "(1,3): wall=True, start=False, exit=False\n", "(2,3): wall=True, start=False, exit=False\n", "(3,3): wall=False, start=False, exit=False\n", "(4,3): wall=True, start=False, exit=False\n", "(5,3): wall=True, start=False, exit=False\n", "(6,3): wall=False, start=False, exit=False\n", "(7,3): wall=True, start=False, exit=False\n", "(8,3): wall=False, start=False, exit=False\n", "(9,3): wall=True, start=False, exit=False\n", "(0,4): wall=True, start=False, exit=False\n", "(1,4): wall=False, start=False, exit=False\n", "(2,4): wall=False, start=False, exit=False\n", "(3,4): wall=False, start=False, exit=False\n", "(4,4): wall=False, start=False, exit=False\n", "(5,4): wall=False, start=False, exit=False\n", "(6,4): wall=False, start=False, exit=False\n", "(7,4): wall=False, start=False, exit=False\n", "(8,4): wall=False, start=False, exit=False\n", "(9,4): wall=True, start=False, exit=False\n", "(0,5): wall=True, start=False, exit=False\n", "(1,5): wall=True, start=False, exit=False\n", "(2,5): wall=True, start=False, exit=False\n", "(3,5): wall=True, start=False, exit=False\n", "(4,5): wall=True, start=False, exit=False\n", "(5,5): wall=True, start=False, exit=False\n", "(6,5): wall=True, start=False, exit=False\n", "(7,5): wall=True, start=False, exit=False\n", "(8,5): wall=True, start=False, exit=False\n", "(9,5): wall=True, start=False, exit=False\n", "\n", "Клетка (2,0) из лабиринта: wall=True\n", "Соседи (2,0): [(1, 2)]\n", "Соседи (1,0): [(0, 0)]\n" ] } ], "source": [ "# Проверьте структуру лабиринта\n", "print(f\"Размер: {maze.width}x{maze.height}\")\n", "\n", "# Проверьте конкретные клетки\n", "for y in range(maze.height):\n", " for x in range(maze.width):\n", " cell = maze.cells[y][x]\n", " print(f\"({x},{y}): wall={cell.isWall}, start={cell.isStart}, exit={cell.isExit}\")\n", "\n", "# Проверьте соседей конкретной клетки из лабиринта\n", "cell_from_maze = maze.cells[2][0] # Берём реальную клетку из лабиринта\n", "print(f\"\\nКлетка (2,0) из лабиринта: wall={cell_from_maze.isWall}\")\n", "print(f\"Соседи (2,0): {[n.getXY() for n in maze.getNeighbors(cell_from_maze)]}\")\n", "\n", "# Проверьте соседей (1,0)\n", "cell_1_0 = maze.cells[1][0]\n", "print(f\"Соседи (1,0): {[n.getXY() for n in maze.getNeighbors(cell_1_0)]}\")" ] }, { "cell_type": "code", "execution_count": 25, "id": "32edf4d1", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['S # #####', '## # # E#', '# # ###', '### ## # #', '# #', '##########']\n", "10 6\n" ] } ], "source": [ "with open(test_lab) as f:\n", " data = f.read().splitlines()\n", " x, y = 0, 0\n", " width = len(data[0])\n", " height = len(data)\n", " print(data)\n", " print(width, height)" ] }, { "cell_type": "code", "execution_count": 26, "id": "dc7708c7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BFS\n", "Путь найден:\n", "#######################################################################################################\n", "# # # # # # # # # # # #\n", "### # ##### # # # ############# ######### ### ### # # # ### # # # # # # ####### ##### ##### # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ##### # ##### ### ### ### # ##### # ####### ##### ### ##### ### ####### # # ####### ### ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### ### ##### # ####### ### ### # ##### ##### # ########### ### ### ##### ### # ### # # # # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ######### ##### ### # ### # ### ##### ### ### # ### # # # ### # # ##### # ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### # # ### # # ####### # # # ### # ### # # # ####### # # ##### ### ### ### # ##### ### # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # ### ### # ##### # # ##### ### # ##### # ##### ##### ### # # ####### ##### # # # # # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ##### ### # ### # ### # # ### ##### ####### ### ##### ### ### # # # # # # # ######### # # ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### ### ### # ############# ### # # ### ############### # ##### # ##### ### # # ########### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # ####### ##### ##### ### ### # ### ### ### ####### ##### # # ##### ##### # # # # ##### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # # ### ##### # # # # ##### ##### ##### ##### # ##### # ### ##### ### ### ### ### ### ########### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ####### # ### # # ##### # # ### # ########### ##### # # ### # ### # # # # ##### # ### # ####### # ###\n", "# # # # # # # S..# # # # # # # # # # # # # # #\n", "### # ####### # ##### ##### ### #.### ### ####### # # # # ### ### # ######### # ### ### ### # # ### # #\n", "# # # # # # # # # #. # # # # # # # # # # # # # # # # # # # # #\n", "# ########### # ### # # # # # ###.########### # # # ####### ### # ##### ### ### ### # ### ####### # # #\n", "# # # # # # # # # #...# # # # # # # # # # # # # # # # # # # #\n", "# # ##### # # ####### ### #####.# # ######### # ##### ### # ##### ########### # # # # # ### # # ### ###\n", "# # # # # # # # # # ...# # # # # # # # # # # # # # # #\n", "# ### ### # ### # # # # # ###.##### ### ### ##### ##### ### # ### # ### ####### # # ### ####### # #####\n", "# # # # # # # # ...#...# # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### ### #####.#.#.##### ### # ### # # ### ### ##### ####### ####### # ##### ### # # ### ### #\n", "# # # # # # # # #.#...# # # # #............... # # # # # # # # # # #\n", "# # # # ##### # # # # #.# # ### # ### ##### ### ###.######### # #.# ##### # # ### ##### ### # # ##### #\n", "# # # # # ...# # # # # # .# # # #.# # # # # # # # # #\n", "##### # # # # #######.### ##### # ##### ####### # #.### #########.### # # # ########### ####### ### ###\n", "# # # # # # # # #.# # # # # # # # # #.# # #. # # # # # # # #\n", "# # ### ### # ### # #.# ##### ### # ### # # #######.### # ##### #.##### ##### ### # # ####### ### ### #\n", "# # # # #.# # # # # .............#.# # # # # #. # # # # # # # # # #\n", "### # ###############.# # ### # #####.### ### ###.#.# # ### ### #.# ### # # ### ##### ### ### ####### #\n", "# # # # #.....# # # # . # # #... # # #...# # # # # # # # #\n", "##### # ####### #.##### ### ### #####.# ####### ######### # ###.# ####### # ######### # # ######### # #\n", "# # # #.# # # # # # #.# # # # # # # # #.# # # # # # # #\n", "# ### ### # ### #.### ##### # ##### #.### # ### # # # # ##### #.# # ############# ####### ### # ### ###\n", "# # # # .# # # # .# # # # # # # #.# # # # # # # # #\n", "# ### ##### ### #.### ##### ### # ###.# # # # ##### # ### # # #.# # # ### # # # ### ######### ##### # #\n", "# # # # #.# # # # #.# # # # # # # # .# # # # # # # # # # # # #\n", "# # ### ##### ###.##### ##### #######.### ########### # # # ###.# # ### ####### # # # # ######### ### #\n", "# # # # # #...# #...# # ...# # # # # # .# # # # # # # # # # #\n", "### ### ### ### ###.# #####.#.# #######.# # # # ####### #######.##### ##### ####### # ##### ### ##### #\n", "# # # # # #.#.......#...........# # # # # #. # # # # # # # # # #\n", "# ####### # ##### #.#.### ##### ### # ####### ### ### # ##### #.### # ### ##### # ### # # # # ### #####\n", "# # # # #... # # # # # # # # # # # #...# # # # # # # # # #\n", "# # ### # # # ##### ##### # # ####### # # ### ####### ### # #####.### # # # ####### # # ### ### # # ###\n", "# # # # # # # # # # # # # # # # #.# # # # # # # # # # # #\n", "# ##### # ### # # ############### # ##### ############# # ##### #.### # ### # # ### # # # # ######### #\n", "# # # # # # # # # # # # # # #. # # # # # # # # # # # #\n", "# ######### # ### # ####### # ####### # # # ### # ### ### # #####.### # ##### ############### ### # # #\n", "# # # # # # # # # # # # # # # # # # # ...# # # # # # # # # # #\n", "### ### ### # ####### # ### # ### # ### # ### ##### ##### #####.### ### # # # # # # ##### ##### ### # #\n", "# # # # # # # # # # # #...# # # # # # # # # # # #\n", "# ### # ### ####### ### ####### # ### ##### # # ####### ##### ###.### # ##### # ####### # # # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # . # # # # # # # # # #\n", "# ### ### ##### # # ##### # # ### # ##### # ### # # ### ### # ###.########### ### # # ### ### ##### # #\n", "# # # # # # # # # # # # # # # # ... # # # # # # # # #\n", "# # ### ### ### ##### ### # ####### ### ##### ### # ######### #####.### ### ##### ####### ##### ### ###\n", "# # # # # # # # # # # # # # #.# # # # # # # # #\n", "########### ##### ##### # ### ### ### # ####### # # ### ### ### # #.# # # ### # ##### # # # ### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # #. # # # # # # # # # #\n", "# ### ##### # ### # # # # # ### # # # ##### # ### ### # # ### #####.####### ### # # ### ######### # ###\n", "# # # # # # # # # # # # # # # # # # #... # # # # # # # #\n", "### ####### # ### ### ##### ##### # ### ### ### ### # ##### # ###.# # # ##### # ### ### # ######### # #\n", "# # # # # # # # # # # # # # # # # # # #.# # # # # # # # # # # # #\n", "# # # # ### # ##### ####### # ##### ##### ##### # # # # # ### # #.######### # ### # ####### # ### #####\n", "# # # # # # # # # # # # # # #...# # # # # # # #\n", "# ### ### ############# ### ### ##### ######### # ### ####### # ###.# # ####### # ### ##### ### #######\n", "# # # # # # # # # # # # # # # #... # # # # #\n", "# # ### # # # ### ##### # # ### ############### ### # # # ##### #.# ##### ##### # ### ##### ##### # ###\n", "# # # # # # # # # # # # # # # E..# # # # # # # # #\n", "# # ### ##### # ##### ### # # # ### # ### # ######### # # ##### ####### ####### ##### ####### # #######\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### ####### ### # # # ##### ######### ### ##### ####### # # # # # # # # # # ### # ### # ### # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # # ### # ### ####### # ### # # ### ####### ####### ### ### # ########### # ### #####\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ####### ######### ##### # # ### ### ### # ### # # # ##### ### # ##### ### # # # ### ###########\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # # # # # # ##### ##### ##### # ##### # ##### # # ### # # # # ######### ########### # ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ### ####### ### ### # ### ######### ##### ##### ####### # # ##### # # # ### # ######### ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # ### # ### ######### # ### # # ### # # # # ##### ### # # ##### ### ######### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### # ######### ### # ### ### # ### # ########### ### ### # ### # # ### ### ######### # ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # # # ### # # # ##### ### # ### ### # ##### ### # ### ##### ##### ####### ##### # ### ### ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # # ##### ### # # ##### ##### # # ######### ### ### ##### ### ### # ### ##### # # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ##### # # ####### # ### ### # ### # ### # # ### ### # # ##### # # ### ### # # # ### #\n", "# # # # # # # # # # # # # # # # # # # # # #\n", "#######################################################################################################\n", "time: 5.097500001284061 ms\n", "visited cells: 2345\n", "path length: 197\n", "DFS\n", "Путь найден:\n", "#######################################################################################################\n", "# # # # # # # # # # # #\n", "### # ##### # # # ############# ######### ### ### # # # ### # # # # # # ####### ##### ##### # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ##### # ##### ### ### ### # ##### # ####### ##### ### ##### ### ####### # # ####### ### ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### ### ##### # ####### ### ### # ##### ##### # ########### ### ### ##### ### # ### # # # # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ######### ##### ### # ### # ### ##### ### ### # ### # # # ### # # ##### # ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### # # ### # # ####### # # # ### # ### # # # ####### # # ##### ### ### ### # ##### ### # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # ### ### # ##### # # ##### ### # ##### # ##### ##### ### # # ####### ##### # # # # # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ##### ### # ### # ### # # ### ##### ####### ### ##### ### ### # # # # # # # ######### # # ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### ### ### # ############# ### # # ### ############### # ##### # ##### ### # # ########### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # ####### ##### ##### ### ### # ### ### ### ####### ##### # # ##### ##### # # # # ##### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # # ### ##### # # # # ##### ##### ##### ##### # ##### # ### ##### ### ### ### ### ### ########### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ####### # ### # # ##### # # ### # ########### ##### # # ### # ### # # # # ##### # ### # ####### # ###\n", "# # # # # # # S..# # # # # # # # # # # # # # #\n", "### # ####### # ##### ##### ### #.### ### ####### # # # # ### ### # ######### # ### ### ### # # ### # #\n", "# # # # # # # # # #. # # # # # # # # # # # # # # # # # # # # #\n", "# ########### # ### # # # # # ###.########### # # # ####### ### # ##### ### ### ### # ### ####### # # #\n", "# # # # # # # # # #...# # # # # # # # # # # # # # # # # # # #\n", "# # ##### # # ####### ### #####.# # ######### # ##### ### # ##### ########### # # # # # ### # # ### ###\n", "# # # # # # # # # # ...# # # # # # # # # # # # # # # #\n", "# ### ### # ### # # # # # ###.##### ### ### ##### ##### ### # ### # ### ####### # # ### ####### # #####\n", "# # # # # # # # ...#...# # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### ### #####.#.#.##### ### # ### # # ### ### ##### ####### ####### # ##### ### # # ### ### #\n", "# # # # # # # # #.#...# # # # #............... # # # # # # # # # # #\n", "# # # # ##### # # # # #.# # ### # ### ##### ### ###.######### # #.# ##### # # ### ##### ### # # ##### #\n", "# # # # # ...# # # # # # .# # # #.# # # # # # # # # #\n", "##### # # # # #######.### ##### # ##### ####### # #.### #########.### # # # ########### ####### ### ###\n", "# # # # # # # # #.# # # # # # # # # #.# # #. # # # # # # # #\n", "# # ### ### # ### # #.# ##### ### # ### # # #######.### # ##### #.##### ##### ### # # ####### ### ### #\n", "# # # # #.# # # # # .............#.# # # # # #. # # # # # # # # # #\n", "### # ###############.# # ### # #####.### ### ###.#.# # ### ### #.# ### # # ### ##### ### ### ####### #\n", "# # # # #.....# # # # . # # #... # # #...# # # # # # # # #\n", "##### # ####### #.##### ### ### #####.# ####### ######### # ###.# ####### # ######### # # ######### # #\n", "# # # #.# # # # # # #.# # # # # # # # #.# # # # # # # #\n", "# ### ### # ### #.### ##### # ##### #.### # ### # # # # ##### #.# # ############# ####### ### # ### ###\n", "# # # # .# # # # .# # # # # # # #.# # # # # # # # #\n", "# ### ##### ### #.### ##### ### # ###.# # # # ##### # ### # # #.# # # ### # # # ### ######### ##### # #\n", "# # # # #.# # # # #.# # # # # # # # .# # # # # # # # # # # # #\n", "# # ### ##### ###.##### ##### #######.### ########### # # # ###.# # ### ####### # # # # ######### ### #\n", "# # # # # #...# #...# # ...# # # # # # .# # # # # # # # # # #\n", "### ### ### ### ###.# #####.#.# #######.# # # # ####### #######.##### ##### ####### # ##### ### ##### #\n", "# # # # # #.#.......#...........# # # # # #. # # # # # # # # # #\n", "# ####### # ##### #.#.### ##### ### # ####### ### ### # ##### #.### # ### ##### # ### # # # # ### #####\n", "# # # # #... # # # # # # # # # # # #...# # # # # # # # # #\n", "# # ### # # # ##### ##### # # ####### # # ### ####### ### # #####.### # # # ####### # # ### ### # # ###\n", "# # # # # # # # # # # # # # # # #.# # # # # # # # # # # #\n", "# ##### # ### # # ############### # ##### ############# # ##### #.### # ### # # ### # # # # ######### #\n", "# # # # # # # # # # # # # # #. # # # # # # # # # # # #\n", "# ######### # ### # ####### # ####### # # # ### # ### ### # #####.### # ##### ############### ### # # #\n", "# # # # # # # # # # # # # # # # # # # ...# # # # # # # # # # #\n", "### ### ### # ####### # ### # ### # ### # ### ##### ##### #####.### ### # # # # # # ##### ##### ### # #\n", "# # # # # # # # # # # #...# # # # # # # # # # # #\n", "# ### # ### ####### ### ####### # ### ##### # # ####### ##### ###.### # ##### # ####### # # # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # . # # # # # # # # # #\n", "# ### ### ##### # # ##### # # ### # ##### # ### # # ### ### # ###.########### ### # # ### ### ##### # #\n", "# # # # # # # # # # # # # # # # ... # # # # # # # # #\n", "# # ### ### ### ##### ### # ####### ### ##### ### # ######### #####.### ### ##### ####### ##### ### ###\n", "# # # # # # # # # # # # # # #.# # # # # # # # #\n", "########### ##### ##### # ### ### ### # ####### # # ### ### ### # #.# # # ### # ##### # # # ### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # #. # # # # # # # # # #\n", "# ### ##### # ### # # # # # ### # # # ##### # ### ### # # ### #####.####### ### # # ### ######### # ###\n", "# # # # # # # # # # # # # # # # # # #... # # # # # # # #\n", "### ####### # ### ### ##### ##### # ### ### ### ### # ##### # ###.# # # ##### # ### ### # ######### # #\n", "# # # # # # # # # # # # # # # # # # # #.# # # # # # # # # # # # #\n", "# # # # ### # ##### ####### # ##### ##### ##### # # # # # ### # #.######### # ### # ####### # ### #####\n", "# # # # # # # # # # # # # # #...# # # # # # # #\n", "# ### ### ############# ### ### ##### ######### # ### ####### # ###.# # ####### # ### ##### ### #######\n", "# # # # # # # # # # # # # # # #... # # # # #\n", "# # ### # # # ### ##### # # ### ############### ### # # # ##### #.# ##### ##### # ### ##### ##### # ###\n", "# # # # # # # # # # # # # # # E..# # # # # # # # #\n", "# # ### ##### # ##### ### # # # ### # ### # ######### # # ##### ####### ####### ##### ####### # #######\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### ####### ### # # # ##### ######### ### ##### ####### # # # # # # # # # # ### # ### # ### # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # # ### # ### ####### # ### # # ### ####### ####### ### ### # ########### # ### #####\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ####### ######### ##### # # ### ### ### # ### # # # ##### ### # ##### ### # # # ### ###########\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # # # # # # ##### ##### ##### # ##### # ##### # # ### # # # # ######### ########### # ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ### ####### ### ### # ### ######### ##### ##### ####### # # ##### # # # ### # ######### ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # ### # ### ######### # ### # # ### # # # # ##### ### # # ##### ### ######### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### # ######### ### # ### ### # ### # ########### ### ### # ### # # ### ### ######### # ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # # # ### # # # ##### ### # ### ### # ##### ### # ### ##### ##### ####### ##### # ### ### ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # # ##### ### # # ##### ##### # # ######### ### ### ##### ### ### # ### ##### # # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ##### # # ####### # ### ### # ### # ### # # ### ### # # ##### # # ### ### # # # ### #\n", "# # # # # # # # # # # # # # # # # # # # # #\n", "#######################################################################################################\n", "time: 3.797699999267934 ms\n", "visited cells: 2609\n", "path length: 197\n", "A*\n", "Путь найден:\n", "#######################################################################################################\n", "# # # # # # # # # # # #\n", "### # ##### # # # ############# ######### ### ### # # # ### # # # # # # ####### ##### ##### # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ##### # ##### ### ### ### # ##### # ####### ##### ### ##### ### ####### # # ####### ### ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### ### ##### # ####### ### ### # ##### ##### # ########### ### ### ##### ### # ### # # # # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ######### ##### ### # ### # ### ##### ### ### # ### # # # ### # # ##### # ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### # # ### # # ####### # # # ### # ### # # # ####### # # ##### ### ### ### # ##### ### # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # ### ### # ##### # # ##### ### # ##### # ##### ##### ### # # ####### ##### # # # # # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ##### ### # ### # ### # # ### ##### ####### ### ##### ### ### # # # # # # # ######### # # ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### ### ### # ############# ### # # ### ############### # ##### # ##### ### # # ########### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # ####### ##### ##### ### ### # ### ### ### ####### ##### # # ##### ##### # # # # ##### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # # ### ##### # # # # ##### ##### ##### ##### # ##### # ### ##### ### ### ### ### ### ########### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ####### # ### # # ##### # # ### # ########### ##### # # ### # ### # # # # ##### # ### # ####### # ###\n", "# # # # # # # S..# # # # # # # # # # # # # # #\n", "### # ####### # ##### ##### ### #.### ### ####### # # # # ### ### # ######### # ### ### ### # # ### # #\n", "# # # # # # # # # #. # # # # # # # # # # # # # # # # # # # # #\n", "# ########### # ### # # # # # ###.########### # # # ####### ### # ##### ### ### ### # ### ####### # # #\n", "# # # # # # # # # #...# # # # # # # # # # # # # # # # # # # #\n", "# # ##### # # ####### ### #####.# # ######### # ##### ### # ##### ########### # # # # # ### # # ### ###\n", "# # # # # # # # # # ...# # # # # # # # # # # # # # # #\n", "# ### ### # ### # # # # # ###.##### ### ### ##### ##### ### # ### # ### ####### # # ### ####### # #####\n", "# # # # # # # # ...#...# # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### ### #####.#.#.##### ### # ### # # ### ### ##### ####### ####### # ##### ### # # ### ### #\n", "# # # # # # # # #.#...# # # # #............... # # # # # # # # # # #\n", "# # # # ##### # # # # #.# # ### # ### ##### ### ###.######### # #.# ##### # # ### ##### ### # # ##### #\n", "# # # # # ...# # # # # # .# # # #.# # # # # # # # # #\n", "##### # # # # #######.### ##### # ##### ####### # #.### #########.### # # # ########### ####### ### ###\n", "# # # # # # # # #.# # # # # # # # # #.# # #. # # # # # # # #\n", "# # ### ### # ### # #.# ##### ### # ### # # #######.### # ##### #.##### ##### ### # # ####### ### ### #\n", "# # # # #.# # # # # .............#.# # # # # #. # # # # # # # # # #\n", "### # ###############.# # ### # #####.### ### ###.#.# # ### ### #.# ### # # ### ##### ### ### ####### #\n", "# # # # #.....# # # # . # # #... # # #...# # # # # # # # #\n", "##### # ####### #.##### ### ### #####.# ####### ######### # ###.# ####### # ######### # # ######### # #\n", "# # # #.# # # # # # #.# # # # # # # # #.# # # # # # # #\n", "# ### ### # ### #.### ##### # ##### #.### # ### # # # # ##### #.# # ############# ####### ### # ### ###\n", "# # # # .# # # # .# # # # # # # #.# # # # # # # # #\n", "# ### ##### ### #.### ##### ### # ###.# # # # ##### # ### # # #.# # # ### # # # ### ######### ##### # #\n", "# # # # #.# # # # #.# # # # # # # # .# # # # # # # # # # # # #\n", "# # ### ##### ###.##### ##### #######.### ########### # # # ###.# # ### ####### # # # # ######### ### #\n", "# # # # # #...# #...# # ...# # # # # # .# # # # # # # # # # #\n", "### ### ### ### ###.# #####.#.# #######.# # # # ####### #######.##### ##### ####### # ##### ### ##### #\n", "# # # # # #.#.......#...........# # # # # #. # # # # # # # # # #\n", "# ####### # ##### #.#.### ##### ### # ####### ### ### # ##### #.### # ### ##### # ### # # # # ### #####\n", "# # # # #... # # # # # # # # # # # #...# # # # # # # # # #\n", "# # ### # # # ##### ##### # # ####### # # ### ####### ### # #####.### # # # ####### # # ### ### # # ###\n", "# # # # # # # # # # # # # # # # #.# # # # # # # # # # # #\n", "# ##### # ### # # ############### # ##### ############# # ##### #.### # ### # # ### # # # # ######### #\n", "# # # # # # # # # # # # # # #. # # # # # # # # # # # #\n", "# ######### # ### # ####### # ####### # # # ### # ### ### # #####.### # ##### ############### ### # # #\n", "# # # # # # # # # # # # # # # # # # # ...# # # # # # # # # # #\n", "### ### ### # ####### # ### # ### # ### # ### ##### ##### #####.### ### # # # # # # ##### ##### ### # #\n", "# # # # # # # # # # # #...# # # # # # # # # # # #\n", "# ### # ### ####### ### ####### # ### ##### # # ####### ##### ###.### # ##### # ####### # # # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # . # # # # # # # # # #\n", "# ### ### ##### # # ##### # # ### # ##### # ### # # ### ### # ###.########### ### # # ### ### ##### # #\n", "# # # # # # # # # # # # # # # # ... # # # # # # # # #\n", "# # ### ### ### ##### ### # ####### ### ##### ### # ######### #####.### ### ##### ####### ##### ### ###\n", "# # # # # # # # # # # # # # #.# # # # # # # # #\n", "########### ##### ##### # ### ### ### # ####### # # ### ### ### # #.# # # ### # ##### # # # ### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # #. # # # # # # # # # #\n", "# ### ##### # ### # # # # # ### # # # ##### # ### ### # # ### #####.####### ### # # ### ######### # ###\n", "# # # # # # # # # # # # # # # # # # #... # # # # # # # #\n", "### ####### # ### ### ##### ##### # ### ### ### ### # ##### # ###.# # # ##### # ### ### # ######### # #\n", "# # # # # # # # # # # # # # # # # # # #.# # # # # # # # # # # # #\n", "# # # # ### # ##### ####### # ##### ##### ##### # # # # # ### # #.######### # ### # ####### # ### #####\n", "# # # # # # # # # # # # # # #...# # # # # # # #\n", "# ### ### ############# ### ### ##### ######### # ### ####### # ###.# # ####### # ### ##### ### #######\n", "# # # # # # # # # # # # # # # #... # # # # #\n", "# # ### # # # ### ##### # # ### ############### ### # # # ##### #.# ##### ##### # ### ##### ##### # ###\n", "# # # # # # # # # # # # # # # E..# # # # # # # # #\n", "# # ### ##### # ##### ### # # # ### # ### # ######### # # ##### ####### ####### ##### ####### # #######\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### ####### ### # # # ##### ######### ### ##### ####### # # # # # # # # # # ### # ### # ### # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # # ### # ### ####### # ### # # ### ####### ####### ### ### # ########### # ### #####\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ####### ######### ##### # # ### ### ### # ### # # # ##### ### # ##### ### # # # ### ###########\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # # # # # # ##### ##### ##### # ##### # ##### # # ### # # # # ######### ########### # ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ### ####### ### ### # ### ######### ##### ##### ####### # # ##### # # # ### # ######### ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # ### # ### ######### # ### # # ### # # # # ##### ### # # ##### ### ######### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### # ######### ### # ### ### # ### # ########### ### ### # ### # # ### ### ######### # ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # # # ### # # # ##### ### # ### ### # ##### ### # ### ##### ##### ####### ##### # ### ### ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # # ##### ### # # ##### ##### # # ######### ### ### ##### ### ### # ### ##### # # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ##### # # ####### # ### ### # ### # ### # # ### ### # # ##### # # ### ### # # # ### #\n", "# # # # # # # # # # # # # # # # # # # # # #\n", "#######################################################################################################\n", "time: 2.6992999992216937 ms\n", "visited cells: 1194\n", "path length: 197\n", "Dijkstra\n", "Путь найден:\n", "#######################################################################################################\n", "# # # # # # # # # # # #\n", "### # ##### # # # ############# ######### ### ### # # # ### # # # # # # ####### ##### ##### # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ##### # ##### ### ### ### # ##### # ####### ##### ### ##### ### ####### # # ####### ### ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### ### ##### # ####### ### ### # ##### ##### # ########### ### ### ##### ### # ### # # # # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ######### ##### ### # ### # ### ##### ### ### # ### # # # ### # # ##### # ### ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### # # ### # # ####### # # # ### # ### # # # ####### # # ##### ### ### ### # ##### ### # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # ### ### # ##### # # ##### ### # ##### # ##### ##### ### # # ####### ##### # # # # # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # ##### ### # ### # ### # # ### ##### ####### ### ##### ### ### # # # # # # # ######### # # ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### ### ### # ############# ### # # ### ############### # ##### # ##### ### # # ########### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # ####### ##### ##### ### ### # ### ### ### ####### ##### # # ##### ##### # # # # ##### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # # ### ##### # # # # ##### ##### ##### ##### # ##### # ### ##### ### ### ### ### ### ########### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ####### # ### # # ##### # # ### # ########### ##### # # ### # ### # # # # ##### # ### # ####### # ###\n", "# # # # # # # S..# # # # # # # # # # # # # # #\n", "### # ####### # ##### ##### ### #.### ### ####### # # # # ### ### # ######### # ### ### ### # # ### # #\n", "# # # # # # # # # #. # # # # # # # # # # # # # # # # # # # # #\n", "# ########### # ### # # # # # ###.########### # # # ####### ### # ##### ### ### ### # ### ####### # # #\n", "# # # # # # # # # #...# # # # # # # # # # # # # # # # # # # #\n", "# # ##### # # ####### ### #####.# # ######### # ##### ### # ##### ########### # # # # # ### # # ### ###\n", "# # # # # # # # # # ...# # # # # # # # # # # # # # # #\n", "# ### ### # ### # # # # # ###.##### ### ### ##### ##### ### # ### # ### ####### # # ### ####### # #####\n", "# # # # # # # # ...#...# # # # # # # # # # # # # # # # # # # #\n", "# # # ### ### ### #####.#.#.##### ### # ### # # ### ### ##### ####### ####### # ##### ### # # ### ### #\n", "# # # # # # # # #.#...# # # # #............... # # # # # # # # # # #\n", "# # # # ##### # # # # #.# # ### # ### ##### ### ###.######### # #.# ##### # # ### ##### ### # # ##### #\n", "# # # # # ...# # # # # # .# # # #.# # # # # # # # # #\n", "##### # # # # #######.### ##### # ##### ####### # #.### #########.### # # # ########### ####### ### ###\n", "# # # # # # # # #.# # # # # # # # # #.# # #. # # # # # # # #\n", "# # ### ### # ### # #.# ##### ### # ### # # #######.### # ##### #.##### ##### ### # # ####### ### ### #\n", "# # # # #.# # # # # .............#.# # # # # #. # # # # # # # # # #\n", "### # ###############.# # ### # #####.### ### ###.#.# # ### ### #.# ### # # ### ##### ### ### ####### #\n", "# # # # #.....# # # # . # # #... # # #...# # # # # # # # #\n", "##### # ####### #.##### ### ### #####.# ####### ######### # ###.# ####### # ######### # # ######### # #\n", "# # # #.# # # # # # #.# # # # # # # # #.# # # # # # # #\n", "# ### ### # ### #.### ##### # ##### #.### # ### # # # # ##### #.# # ############# ####### ### # ### ###\n", "# # # # .# # # # .# # # # # # # #.# # # # # # # # #\n", "# ### ##### ### #.### ##### ### # ###.# # # # ##### # ### # # #.# # # ### # # # ### ######### ##### # #\n", "# # # # #.# # # # #.# # # # # # # # .# # # # # # # # # # # # #\n", "# # ### ##### ###.##### ##### #######.### ########### # # # ###.# # ### ####### # # # # ######### ### #\n", "# # # # # #...# #...# # ...# # # # # # .# # # # # # # # # # #\n", "### ### ### ### ###.# #####.#.# #######.# # # # ####### #######.##### ##### ####### # ##### ### ##### #\n", "# # # # # #.#.......#...........# # # # # #. # # # # # # # # # #\n", "# ####### # ##### #.#.### ##### ### # ####### ### ### # ##### #.### # ### ##### # ### # # # # ### #####\n", "# # # # #... # # # # # # # # # # # #...# # # # # # # # # #\n", "# # ### # # # ##### ##### # # ####### # # ### ####### ### # #####.### # # # ####### # # ### ### # # ###\n", "# # # # # # # # # # # # # # # # #.# # # # # # # # # # # #\n", "# ##### # ### # # ############### # ##### ############# # ##### #.### # ### # # ### # # # # ######### #\n", "# # # # # # # # # # # # # # #. # # # # # # # # # # # #\n", "# ######### # ### # ####### # ####### # # # ### # ### ### # #####.### # ##### ############### ### # # #\n", "# # # # # # # # # # # # # # # # # # # ...# # # # # # # # # # #\n", "### ### ### # ####### # ### # ### # ### # ### ##### ##### #####.### ### # # # # # # ##### ##### ### # #\n", "# # # # # # # # # # # #...# # # # # # # # # # # #\n", "# ### # ### ####### ### ####### # ### ##### # # ####### ##### ###.### # ##### # ####### # # # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # . # # # # # # # # # #\n", "# ### ### ##### # # ##### # # ### # ##### # ### # # ### ### # ###.########### ### # # ### ### ##### # #\n", "# # # # # # # # # # # # # # # # ... # # # # # # # # #\n", "# # ### ### ### ##### ### # ####### ### ##### ### # ######### #####.### ### ##### ####### ##### ### ###\n", "# # # # # # # # # # # # # # #.# # # # # # # # #\n", "########### ##### ##### # ### ### ### # ####### # # ### ### ### # #.# # # ### # ##### # # # ### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # #. # # # # # # # # # #\n", "# ### ##### # ### # # # # # ### # # # ##### # ### ### # # ### #####.####### ### # # ### ######### # ###\n", "# # # # # # # # # # # # # # # # # # #... # # # # # # # #\n", "### ####### # ### ### ##### ##### # ### ### ### ### # ##### # ###.# # # ##### # ### ### # ######### # #\n", "# # # # # # # # # # # # # # # # # # # #.# # # # # # # # # # # # #\n", "# # # # ### # ##### ####### # ##### ##### ##### # # # # # ### # #.######### # ### # ####### # ### #####\n", "# # # # # # # # # # # # # # #...# # # # # # # #\n", "# ### ### ############# ### ### ##### ######### # ### ####### # ###.# # ####### # ### ##### ### #######\n", "# # # # # # # # # # # # # # # #... # # # # #\n", "# # ### # # # ### ##### # # ### ############### ### # # # ##### #.# ##### ##### # ### ##### ##### # ###\n", "# # # # # # # # # # # # # # # E..# # # # # # # # #\n", "# # ### ##### # ##### ### # # # ### # ### # ######### # # ##### ####### ####### ##### ####### # #######\n", "# # # # # # # # # # # # # # # # # # # # # # # # #\n", "### ####### ### # # # ##### ######### ### ##### ####### # # # # # # # # # # ### # ### # ### # ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # # ### # ### ####### # ### # # ### ####### ####### ### ### # ########### # ### #####\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ####### ######### ##### # # ### ### ### # ### # # # ##### ### # ##### ### # # # ### ###########\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "##### # # # # # # # # # ##### ##### ##### # ##### # ##### # # ### # # # # ######### ########### # ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # ### ### ####### ### ### # ### ######### ##### ##### ####### # # ##### # # # ### # ######### ### # #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ### ### ####### # ### # ### ######### # ### # # ### # # # # ##### ### # # ##### ### ######### # # ###\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# ##### ### # ######### ### # ### ### # ### # ########### ### ### # ### # # ### ### ######### # ##### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "# # # # # ### # # # ##### ### # ### ### # ##### ### # ### ##### ##### ####### ##### # ### ### ### # # #\n", "# # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ##### # # ##### ### # # ##### ##### # # ######### ### ### ##### ### ### # ### ##### # # ### ### #\n", "# # # # # # # # # # # # # # # # # # # # # # # # # # #\n", "### # ### # ### # ##### # # ####### # ### ### # ### # ### # # ### ### # # ##### # # ### ### # # # ### #\n", "# # # # # # # # # # # # # # # # # # # # # #\n", "#######################################################################################################\n", "time: 4.481500000110827 ms\n", "visited cells: 2345\n", "path length: 197\n" ] } ], "source": [ "maze = builder.buildFromFile(test_lab5)\n", "\n", "strats = [BFS(), DFS(), AStar(), Dijkstra()]\n", "\n", "for strat in strats:\n", " solver = MazeSolver(maze, strat, ConsoleView())\n", " print(solver.strategyName())\n", " stats = solver.solve()\n", " stats.show()" ] }, { "cell_type": "code", "execution_count": 27, "id": "48d20564", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "BFS\n", "Путь найден:\n", "#####################################\n", "#S #\n", "#. #\n", "#. #\n", "#. #\n", "#. #\n", "#. #\n", "#. #\n", "#. #\n", "#..................................E#\n", "#####################################\n", "time: 0.5636999994749203 ms\n", "visited cells: 315\n", "path length: 43\n" ] } ], "source": [ "maze2 = builder.buildFromFile(test_lab2)\n", "\n", "solver = MazeSolver(maze2, BFS(), ConsoleView())\n", "print(solver.strategyName())\n", "stats = solver.solve()\n", "stats.show()" ] }, { "cell_type": "code", "execution_count": 28, "id": "bf13d5ba", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DFS\n", "Путь найден:\n", "#####################################\n", "#S..................................#\n", "# .#\n", "#...................................#\n", "#. #\n", "#...................................#\n", "# .#\n", "#...................................#\n", "#. #\n", "#..................................E#\n", "#####################################\n", "time: 0.3818000004685018 ms\n", "visited cells: 315\n", "path length: 179\n" ] } ], "source": [ "maze2 = builder.buildFromFile(test_lab2)\n", "\n", "solver = MazeSolver(maze2, DFS(), ConsoleView())\n", "print(solver.strategyName())\n", "stats = solver.solve()\n", "stats.show()" ] }, { "cell_type": "code", "execution_count": 29, "id": "9383cb75", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dijkstra\n", "Путь найден:\n", "####################\n", "#S #\n", "#. ########## #\n", "#. #### #\n", "#. ######## #\n", "#. #\n", "#. ####### #### #\n", "#................E #\n", "####################\n", "time: 0.19580000298446976 ms\n", "visited cells: 92\n", "path length: 23\n" ] } ], "source": [ "maze2 = builder.buildFromFile(test_lab3)\n", "\n", "solver = MazeSolver(maze2, Dijkstra(), ConsoleView())\n", "print(solver.strategyName())\n", "stats = solver.solve()\n", "stats.show()" ] }, { "cell_type": "code", "execution_count": 30, "id": "835cff61", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A*\n", "Путь найден:\n", "#####################################################\n", "# S..... # # # # # # # # #\n", "#######.##### # ##### # # ### ### ### ### ##### # ###\n", "# # .# # # # # # # # # #\n", "# #####.# ####### ##### ### ####### ### ### # # # # #\n", "# ... # # # # # # # # # # # # # # #\n", "# ###.# ##### # # # # ##### # # # ##### # ### ### ###\n", "# # .# # # # # # # # # # # # #\n", "# ###.# # ### # ### # ### # # ######### ##### # ### #\n", "# #...# # # # # # # # # # # # #\n", "###.# ### ####### ### # ### ### ####### # ### ### # #\n", "#...# # # # # # # # # # # # # #\n", "#.### # # # # # ##### ### # ### ### # ######### #####\n", "#.# # # # # # # # # # # # #\n", "#.############# # # ### ##### ##### ### ##### ### # #\n", "#.....# # # # # # # # # # #\n", "### #.# # ########### ##### # ### ### ######### ### #\n", "# # #.# # # # # # # # # # #\n", "# ###.# ####### # ##### # ### ### ####### # # # ### #\n", "# #.# # # # # # # # # # # # # #\n", "# # #.### # # ####### # ### ### ### ##### ### #######\n", "# #...# # # # # # # # # # # #\n", "###.### ##### # # ### ### ### # ### # ######### ### #\n", "#...# # # # # # # # # # #\n", "#.# # ### ##### # # # # ########### # ### # # # # ###\n", "#.# # # # # # # # # # # # # #\n", "#.# # ############# ##### ##### ##### ### # ##### # #\n", "#.# # # # #...# # # # # # # #\n", "#.##### ### ##### # #.#.### # ### ####### ### ##### #\n", "#...# # # # #.#...# # #...# # # # # # # #\n", "###.### # ######### #.###.# ###.#.# # # ### ##### # #\n", "# ... # #.# .......#...# # # # # #\n", "### #.# ####### # ###.#############.# # # ### ### # #\n", "# #.# # # # ...# # # # .# # # #\n", "### #.######### #######.# ### # # #.### ##### ##### #\n", "# #....... # #....... # #.# # # # #\n", "# ### #####.### #.### ### # #######.# ##### # #######\n", "# # # # #. # #.# # # # # #... # # # # #\n", "##### # # #.#####.# ####### ### # ###.##### # # # ###\n", "# #.....# #...# # # # # #..... # # #\n", "#######.##### #.### ### # ##### ##### ###.##### ### #\n", "#.....#. # # #. # # # # # #.# # # #\n", "#.# #.#.# # # #.##### ### # # # ### ### #.# ### ### #\n", "#.# #...# # . # # # # # # # # # # #. # #\n", "#.#############.### ### # ### # # ### ###.### ##### #\n", "#.# # # # # . # # # # #. # # #\n", "#.# # # # # ###.### # ##### ### ### ### #.### ### # #\n", "#.# # # #...# # # # # .......# # #\n", "#.##### ##### ###.########### ####### ##### ###.#####\n", "#.# #.............# # # # # # # # #... #\n", "#.# #.##### # # ### # ### # # # # ### ### # #####.###\n", "#..... # # # # # # # # E #\n", "#####################################################\n", "time: 1.7649000001256354 ms\n", "visited cells: 805\n", "path length: 202\n" ] } ], "source": [ "maze2 = builder.buildFromFile('mazes\\\\benchmarks\\maze50x50.txt')\n", "\n", "solver = MazeSolver(maze2, AStar(), ConsoleView())\n", "print(solver.strategyName())\n", "stats = solver.solve()\n", "stats.show()" ] }, { "cell_type": "code", "execution_count": null, "id": "2d84a151", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.6" } }, "nbformat": 4, "nbformat_minor": 5 }