2026-rff_mp/stepushovgs/labyrinth/test.ipynb

1079 lines
66 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}