2026-05-20 10:05:52 +00:00
|
|
|
|
{
|
|
|
|
|
|
"cells": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 12,
|
2026-05-21 21:17:01 +00:00
|
|
|
|
"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\n",
|
|
|
|
|
|
"# from source.strategy.maze_solver import \n",
|
|
|
|
|
|
"from source.classes import Cell\n",
|
|
|
|
|
|
"# from source.strategy import "
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 13,
|
|
|
|
|
|
"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_lab20x20.txt'"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 14,
|
2026-05-20 10:05:52 +00:00
|
|
|
|
"id": "4489fc7e",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"S # ###\n",
|
|
|
|
|
|
"## # # E\n",
|
|
|
|
|
|
"# # #\n",
|
|
|
|
|
|
"### ## #\n",
|
|
|
|
|
|
"# #\n",
|
|
|
|
|
|
"########\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"with open(test_lab) as f:\n",
|
2026-05-20 10:05:52 +00:00
|
|
|
|
" data = f.readlines()\n",
|
|
|
|
|
|
" for el in data:\n",
|
|
|
|
|
|
" print(el.rstrip())"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 15,
|
2026-05-20 10:05:52 +00:00
|
|
|
|
"id": "fde1eddb",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
2026-05-20 18:42:45 +00:00
|
|
|
|
"S # ###\n",
|
|
|
|
|
|
"## # # E\n",
|
|
|
|
|
|
"# # #\n",
|
|
|
|
|
|
"### ## #\n",
|
|
|
|
|
|
"# #\n",
|
|
|
|
|
|
"########\n"
|
2026-05-20 10:05:52 +00:00
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
2026-05-21 21:17:01 +00:00
|
|
|
|
"\n",
|
2026-05-20 10:05:52 +00:00
|
|
|
|
"\n",
|
|
|
|
|
|
"builder = TextFileMazeBuilder()\n",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"maze = builder.buildFromFile(filename=test_lab)\n",
|
2026-05-20 10:05:52 +00:00
|
|
|
|
"\n",
|
|
|
|
|
|
"maze.printer()"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 16,
|
2026-05-20 10:05:52 +00:00
|
|
|
|
"id": "22325f68",
|
|
|
|
|
|
"metadata": {},
|
2026-05-20 20:07:51 +00:00
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"Загружен лабиринт:\n",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"S.P# ###\n",
|
2026-05-20 20:07:51 +00:00
|
|
|
|
"## # # E\n",
|
|
|
|
|
|
"# # #\n",
|
|
|
|
|
|
"### ## #\n",
|
|
|
|
|
|
"# #\n",
|
|
|
|
|
|
"########\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
2026-05-21 21:17:01 +00:00
|
|
|
|
"\n",
|
|
|
|
|
|
"# from source.observer.observer import \n",
|
2026-05-20 20:07:51 +00:00
|
|
|
|
"\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",
|
|
|
|
|
|
"))"
|
|
|
|
|
|
]
|
2026-05-20 10:05:52 +00:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 17,
|
2026-05-21 19:06:22 +00:00
|
|
|
|
"id": "19840429",
|
2026-05-20 10:05:52 +00:00
|
|
|
|
"metadata": {},
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"Путь найден:\n",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"S..# ###\n",
|
|
|
|
|
|
"##.# #.E\n",
|
|
|
|
|
|
"# .. #.#\n",
|
|
|
|
|
|
"###.##.#\n",
|
|
|
|
|
|
"# ....#\n",
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"########\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)])"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 17,
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
2026-05-21 19:06:22 +00:00
|
|
|
|
"source": [
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"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]"
|
2026-05-21 19:06:22 +00:00
|
|
|
|
]
|
|
|
|
|
|
},
|
2026-05-21 20:40:09 +00:00
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 18,
|
2026-05-21 20:40:09 +00:00
|
|
|
|
"id": "73ba37a8",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
2026-05-21 21:17:01 +00:00
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"Путь найден:\n",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"S..# ###\n",
|
|
|
|
|
|
"##.# #.E\n",
|
|
|
|
|
|
"# .. #.#\n",
|
|
|
|
|
|
"###.##.#\n",
|
|
|
|
|
|
"# ....#\n",
|
2026-05-21 21:17:01 +00:00
|
|
|
|
"########\n"
|
2026-05-21 20:40:09 +00:00
|
|
|
|
]
|
2026-05-21 21:17:01 +00:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"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)])"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 18,
|
2026-05-21 21:17:01 +00:00
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"output_type": "execute_result"
|
2026-05-21 20:40:09 +00:00
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"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]"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
2026-05-21 19:06:22 +00:00
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 19,
|
2026-05-21 19:06:22 +00:00
|
|
|
|
"id": "857c5c04",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"0\n",
|
|
|
|
|
|
"1\n",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"4\n",
|
|
|
|
|
|
"2\n",
|
|
|
|
|
|
"3\n",
|
2026-05-21 19:06:22 +00:00
|
|
|
|
"3\n",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"2\n"
|
2026-05-21 19:06:22 +00:00
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"data": {
|
|
|
|
|
|
"text/plain": [
|
|
|
|
|
|
"{'0', '1', '2', '3', '4'}"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 19,
|
2026-05-21 19:06:22 +00:00
|
|
|
|
"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')"
|
|
|
|
|
|
]
|
2026-05-21 20:31:17 +00:00
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 20,
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"id": "9a5ea5cb",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"Размер: 8x6\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",
|
|
|
|
|
|
"(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=True\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",
|
|
|
|
|
|
"(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",
|
|
|
|
|
|
"(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=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",
|
|
|
|
|
|
"\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",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 21,
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"id": "32edf4d1",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"['S # ###', '## # # E', '# # #', '### ## #', '# #', '########']\n",
|
|
|
|
|
|
"8 6\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"with open(test_lab) as f:\n",
|
2026-05-21 20:31:17 +00:00
|
|
|
|
" 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",
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"execution_count": 22,
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"id": "48d20564",
|
|
|
|
|
|
"metadata": {},
|
2026-05-22 18:57:45 +00:00
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"Путь найден:\n",
|
|
|
|
|
|
"# # # # # # # # # # # # # # # # # # # #\n",
|
|
|
|
|
|
"S. # # # #\n",
|
|
|
|
|
|
"#.# # # # # # # # # # # # #\n",
|
|
|
|
|
|
"#..... # # # # # # # # #\n",
|
|
|
|
|
|
"# #.# # # # # # # # # # # #\n",
|
|
|
|
|
|
"# #............. # # # # #\n",
|
|
|
|
|
|
"# # # # # # #. # # # # # # #\n",
|
|
|
|
|
|
"# # # # #..... # # # # #\n",
|
|
|
|
|
|
"# # # # # # #. # # # # #\n",
|
|
|
|
|
|
"# # # # #. # # # # #\n",
|
|
|
|
|
|
"# # # # # # #. # # # # #\n",
|
|
|
|
|
|
"# # # # #..... # # # #\n",
|
|
|
|
|
|
"# # # # # # # # #. # # # #\n",
|
|
|
|
|
|
"# # # # #. # # #\n",
|
|
|
|
|
|
"# # # # # # # # #. # # # # #\n",
|
|
|
|
|
|
"# # # # # # #. # # # #\n",
|
|
|
|
|
|
"# # # # # # #. # # # #\n",
|
|
|
|
|
|
"# # # # # # #. # # # #\n",
|
|
|
|
|
|
"# # # #...........E #\n",
|
|
|
|
|
|
"# # # # # # # # # # # # # # # # # # # #\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"maze2 = builder.buildFromFile(test_lab3)\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"solver = MazeSolver(maze2, BFS(), ConsoleView())\n",
|
|
|
|
|
|
"stats = solver.solve()"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": 23,
|
|
|
|
|
|
"id": "bf13d5ba",
|
|
|
|
|
|
"metadata": {},
|
|
|
|
|
|
"outputs": [
|
|
|
|
|
|
{
|
|
|
|
|
|
"name": "stdout",
|
|
|
|
|
|
"output_type": "stream",
|
|
|
|
|
|
"text": [
|
|
|
|
|
|
"Путь найден:\n",
|
|
|
|
|
|
"# # # # # # # # # # # # # # # # # # # #\n",
|
|
|
|
|
|
"S.......# # # #\n",
|
|
|
|
|
|
"# # # .# # # # # # # # # # #\n",
|
|
|
|
|
|
"#.......# # # # # # # # #\n",
|
|
|
|
|
|
"#. # # # # # # # # # # # # #\n",
|
|
|
|
|
|
"#...# ...........# # # # #\n",
|
|
|
|
|
|
"# .# # #. # # # .# # # # # # #\n",
|
|
|
|
|
|
"#...# #...# # .....# # # # #\n",
|
|
|
|
|
|
"#. # # .# # # # .# # # # #\n",
|
|
|
|
|
|
"#...# #...# #...# # # # #\n",
|
|
|
|
|
|
"# .# #. # # # #. # # # # #\n",
|
|
|
|
|
|
"#...# #..... # #.......# # # #\n",
|
|
|
|
|
|
"#. # # # #...# # # # .# # # #\n",
|
|
|
|
|
|
"#...#.......# .# #...# # #\n",
|
|
|
|
|
|
"# .#.# # .#...# # # #. # # # # #\n",
|
|
|
|
|
|
"#...#. #...#. # # #...# # # #\n",
|
|
|
|
|
|
"#. #...#. #...# # # .# # # #\n",
|
|
|
|
|
|
"#...# .#...# .# # # .# # # #\n",
|
|
|
|
|
|
"# .....# .....# # .........E #\n",
|
|
|
|
|
|
"# # # # # # # # # # # # # # # # # # # #\n"
|
|
|
|
|
|
]
|
|
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"source": [
|
|
|
|
|
|
"maze2 = builder.buildFromFile(test_lab3)\n",
|
|
|
|
|
|
"\n",
|
|
|
|
|
|
"solver = MazeSolver(maze2, DFS(), ConsoleView())\n",
|
|
|
|
|
|
"stats = solver.solve()"
|
|
|
|
|
|
]
|
|
|
|
|
|
},
|
|
|
|
|
|
{
|
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
|
"id": "9383cb75",
|
|
|
|
|
|
"metadata": {},
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"outputs": [],
|
|
|
|
|
|
"source": []
|
2026-05-20 10:05:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
],
|
|
|
|
|
|
"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",
|
2026-05-21 20:31:17 +00:00
|
|
|
|
"version": "3.10.6"
|
2026-05-20 10:05:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
"nbformat": 4,
|
|
|
|
|
|
"nbformat_minor": 5
|
|
|
|
|
|
}
|