This commit is contained in:
Pavel 2026-05-24 23:53:59 +03:00
parent 797c260aaa
commit 61908239da
10 changed files with 258 additions and 6 deletions

View File

@ -0,0 +1,100 @@
####################################################################################################
#S ### ## # ## ## # # # # ## # ## ## # #### ##### # ## ## # ## # ### #
# # ### # ## # # # # ## # # # # # # ## ## # # ### ## # # #
# # # # ## # # ## ## # # # ## # # # #### # # ### ### # ## # # # #
# ### ### ## ## # ### # ## # # # # # # ## ## ## ## # #### ### ## # ##
# # # # ## # # # # ## ## # # ## # #### ### #### # # ### ### # ###
# ## # # # # # ## # ## ## ## ## # ### ## #### ## # # # # ## ##
# ## # # # #### # # # # # # # ###### # # # # ## ## # # ## # ## ## ##
# # # # # ## ## # # # ### # ## # # ### # # ### ## # ## # # # ## # # ## ### #
# ## ## # # # # # ## #### ### # ## ##### # # # # # # # ##
# # ### ## ## # ### # ## # # ##### # # # # ### ### # ### ###
# # ## # ## ## # # # ## ## # # # #### ## # # # ## # ####
# # ### # ## # # # # # # # # # # # # # ## # #### # # # # # # ##
# ### # ## ## # # # ## # # # ## ### # ## # ## # ## ## # ## # ### ## ## ##
# ## #### ###### # ## ## ## # # ## # #### # #### ## ## # # # # ## ## # ## #
# ## # ### ### ## # ## ## # ## # # # # ## # # ## ## # # # # # ## #
# ## ## ## # ### # ## # ## # # # ##### # #### # ## # # # ## # # ## ### ##
# # # ## ## ## # #### ##### # ## ## # ### # # # # # # # ### ##
# # # # # ## ## # ### # # ## # #### # ### ## # # ### ###### # ## #
# ## # # # ### # # # ## # # # ## # # ### ## ## #
# # # # # # ## # # # # ## # # # # # # # ### # ##### # # # # ### ## # # ##
# ### # # # ## # ### # # # # ## ## # ### ## ### # # # # # # ## #
# # ## ### # # # # ## ##### #### # # ### ### #### # ## # ###
# # # # # # # ## # # ## ### # # ## # # ### # # # ## # # # #
# # #### # # ##### # # ### ## # # # # # ## ### ## # # # ### # ## #
# # ### ## # # ## # # ## ### # ## ## # # # # # # # ## # # #
# # ## # ## # # # ### ## # ## # # ### # # # ### # # # # # ##
# # # # # ## # # # # # ## # #### # # ## # # # ###### ### ###
# # # # ##### ## # ## ### ## # ## ## # # ## # ##### ## ## # # ## ##
# # # ### # # ## # ### # # # # ## # # # ## # # # # #### # # # #
# ### # # ## # # ## # # ## # # # #### ### # # ### # # ### ### ####
# ##### ## # # ## # # # # ## ### # # # ## # # ### ## # # # ## #
# ## # ## # ## #### # ## # # ## # ## ## # # ## ## # ### # # # # #
# # #### ## ### ## ### ## # # ## # ##### # # # ## ## ## ### ### # ##### # ## # #
# # # # ###### ## ## ### # # ## # # ## # # ### ## #### # # ## # #
# # # ## ### #### # # ## # # # ## # ## # # # ## # # # #### # # ## #
# # # # # # ### ## # # ## # # ##### # # # # # ### ## ## ### # #
# # ## # # # # ## ## # ## # # # #### ## # ## ##### # ## # # # ### # #
# ## ## ## # ## # ## ### # # # # ## # ## # # # ### #### # # # #
# ### ### # # ## ##### # # # #### # # # ## ## ## # ### ## # ### # ### # # #
# # # ## ## # ## ## ## # # # # # ## # # ## ## ## # ## ## ## # # #
# ## # # ### # # # # # ## # # # ##### # # # # # #### # # ###
# ### # ## ## ## # # # # # # # # # #### ## # ## # # # # ## # ## #
# # # # ### # # ## # # #### # # # # ## # ## ## ## ## # # ## # # # ## #
# ## ## # ## # ### # ## # ##### # # # # ## # # # #### ## ##### #
# # ## # # # ## # # #### # ## ## # # # ## ## ## #### #### ## # ###
# # # ## ## # # # # ## # ## # # # # ## # # ## # # ## # ##
# #### # # ## # ## # ### # # # # # #### # # # ### # # # # # # ##
# # # # # # # ## # # ## # # # # ## # ## # # # # ### # ## # # ### #
# ### # ##### ## # # ## ### ## # #### ## # ## ### ## # # # # # # ### ##
# # ## #### ## # # # # # # # ## # ###### # ## #### ###### # ####
# # # ##### # ## # ## # # # ## ### # # ## # # # # # # # #
# # # # # # # # # # # ## ## # # # ## ### ### # # ### #
# ## ## # # # # # # # # ## #### # # #### # #### # ## # # ## # ####
# # # ## # # # ## ## ### # # # # # # # ### # # # # ## ## # # # ## # #
# # ## #### # ## ## ## # # # ### # # ## ## ####### ### # # # ##
# # ##### # # # # # # ## # # ### # #### # # # #### # # # # #
# # ## # ### # # ## # # # # # ### ## # ## # # ## # # # ### # ## #####
# # ## #### ## # # # ## ### # ## # ### # ## # #### ## # # ## # #
# # ## ## ## # # ### # # # ### ### # # # ##### # # # # # ##
# # ## # # # # # ### # ## # # # ## # # # ## # ### ### # # # ##
# # ### ## ##### ## # ## # # ###### # ## ####### # # ## # ### ## ## # # ##### ##
# ### # ### # # # # # # ##### # # # # ##### # ##### #
# # # ## # # # #### ## # ## # # # # # ## ## ### # # # #### #
# ### # ## # # # ## ## # # # ##### # # # ## # # # ## # ### ## # #
# # # ## ## # # # # ## ## # ## # # ## ## # # ## # ##### # ####
# ##### # #### # # # #### # # ## ## # # ## ## # # ##### # ##### # ## ##
# ## # ## # # # ## # # # ### # ### ##### #### # # # # # ## ## # # #
# # ### # # # #### # # ## # # ## # ### ### ## ## ## # # ## # # # # # ## # # #
# # # # # # # # # # # ## # # ## # ## ### # # # # ### # # ## ### ## #
# ## ## # # ### ##### ## # ### ## # # ## # # # # ##### # ### ### ## # #
# ## ## ## ## # ## ### ## ### # # # # # # ## # # # # ##
# # # #### # # # # # #### # # # # # # ### ## ## #
# # ## ## ### # # # # ## # #### ## # ## # # # # ### ### ## # # # # ###
# # # ## # ## ## ## ## # ## # # ### # # # # # # ### # #### # # # ## #
# # ### # ## ## # # # ## # ## # # # # # # ## # # # # #
# # # # # # # # ## #### # ### ## ## # ## # ### # ### ##
# # # ## # # ### ## # # ### # ## ## # # ### # #### # # # # ## #
# # # # # ### # # # # ### ### ## # # # ## ## # ## ### # # # ##
# ## #### # ### # # ##### # # # # ## ## # #### #### #
# # # # # # # ## # ## ## # # ## ## # ### # ### # #
# # # # ## # # ## # ### ### # ### #### # # # ### ## # ## # ## # ### ##
# ### ## ## # # # # # # # ### ### ## ## ### # ## ## ## ### ##
# ## # ## ### ## # #### # ## # # ## ## # # ## ## ## # ## ## # #
# # ## ## # ## # # # # #### # ## ## ## # ### # ### #
# # # # # # ## # # # # # # ## ## # ##### # # # # ###### ### #
# # # ## ### ## ### # # ## ## # # # # ### # # ## ### #### # #
# ## # ## # ### # # # # ## # # ### # # # # #### # # ### # # # ## ####
# # # # #### ## # ## # ### #### # # # # # # # # # # ## ### # ##
# ## ## ### # ### ## ## ## #### #### ## ## ### # ## # # ## # # # # # # # #
# # # # ### # # ## # # # # ## ### ## # ### # # # # ## # # # ###
# # # #### # ## # # # ## ### # ## ## ## ## ## ### # ### # # # #
# # # # # # ## # # ## ## ## # ##### # # # # ## ### # ##### # #
# ## # ### # # # # # ## # ## # # ## # ## ## # # # # ## #### # # # # # # #
# # ## ## ## #### # # ## # # # # ### #### # ### # # # # ### # #
# # #### # ## # ## ## ## ## # #### # ## # # # ### ## ### # # #
# # ### ## ## ## # ### ### # # # # # ## ## ## # ##### ## # # # #
# ## # # ## # # # ## ## # # # # # # ## # ### # # # ## ### ## #
# E#
####################################################################################################

View File

@ -0,0 +1,43 @@
import random
def save_maze(filename, width, height, wall_probability):
maze = []
for i in range(height):
row = ""
for j in range(width):
if i == 0 or i == height-1:
row += "#"
elif j == 0 or j == width-1:
row += "#"
else:
if random.random() < wall_probability:
row += "#"
else:
row += " "
maze.append(list(row))
maze[1][1] = "S"
maze[height-2][width-2] = "E"
for i in range(1, height-1):
maze[i][1] = " "
for j in range(1, width-1):
maze[height-2][j] = " "
maze[1][1] = "S"
maze[height-2][width-2] = "E"
with open(filename, "w", encoding="utf-8") as f:
for row in maze:
f.write("".join(row)+"\n")
save_maze(
"medium_maze.txt",
50,
50,
0.30
)
save_maze(
"big_maze.txt",
100,
100,
0.40
)
print("Лабиринты созданы")

View File

@ -5,7 +5,7 @@ from observer_command import ConsoleView, Player, MoveCommand
import os import os
builder = TextFileMazeBuilder() builder = TextFileMazeBuilder()
maze = builder.buildFromFile("maze.txt") maze = builder.buildFromFile("no_exit_maze.txt")
print("Лабиринт:\n") print("Лабиринт:\n")
maze.printMaze() maze.printMaze()
print("Выберете алгоритм") print("Выберете алгоритм")

View File

@ -1,5 +0,0 @@
##########
#S # #
# ### #
# ##E #
##########

View File

@ -0,0 +1,50 @@
##################################################
#S## # ## # # # # # # ## #
# # # # # # # ### # #### # #
# ## ## # # ## ### # # #
# ## #### ### ## ## ## # # #
# # #### # ## # # # ## ## # #####
# # ## # ### ## # # #### # # #
# # # # ### # ## # ##### # ### # #
# # # # # # # # # # ## ### ##
# # # # # # ## # ## ## # # #
# # # # ### #### ### # # ## ## #
# # ## # ## # # ## # ## # # ## ##
# # # # # # # ##### ## # ### # # ##
# # # ## ### ## # # # ## #
# ## # # ### # # # # ## # #
# # #### ### ### #### # ## # #
# # # # # # # ## # ## # #
# ## ## # # # # # # ## ### #
# ## # ## # ## #### ### # #### # # #
# ## ### # # # # # # ## #
# # # ## # ##### ### # #
# # # ## # # ## # #
# # ## # # # # ## # # #
# # # # # #
# # ## ## # ## ## #
# # ## ### # # # # ## ##
# # #### # # ## # # # ## # ##
# # # # # ## ## # # # # ####
# # # # # ## ##### # # # ##
# # ## # ## ### # # ## # ## ## #
# # # ### ## ###### # # ## # # # #
# # # ## # # # # # ##
# # # # # # ## ## # # # ## #
# ##### # # ## ## ## # ## ### ##
# ## ## # # # ## # ## ##
# # # # # ### # # # ### # #
# ## # ## ### ## # ##
# # ### # ## ## # ## ## # # # #
# ## # ## # # ## #### # ## ##
# ## # # # # ## ## # # # #
# # # # # # # # # ## # #
# # # # # # ## # ### # ###
# ## # ## # # # ## # # #
# # # # # # # # # # ## #
# ## # # # # ## ## # ## # # # #
# # # ## # # # ## # ## #
# ## ## # # # # # ## # # # ## # #
# # ## ## # # ## # # # # #
# E#
##################################################

View File

@ -0,0 +1,10 @@
##########
#S # #
# ###### #
# ###### #
# ###### #
# ###### #
# ###### #
# ###### #
# ######E#
##########

View File

@ -0,0 +1,10 @@
##########
#S #
# #
# #
# #
# #
# #
# #
# E#
##########

View File

@ -0,0 +1,21 @@
import csv
results = [
["maze", "strategy", "time_ms", "cells visited", "path length"],
["small_maze", "BFS", 0.173, 15, 15],
["small_maze", "DFS", 0.198, 15, 15],
["small_maze", "A*", 0.195, 15, 15],
["medium_maze", "BFS", 7.228, 95, 95],
["medium_maze", "DFS", 1.361, 189, 189],
["medium_maze", "A*", 3.050, 95, 95],
["big_maze", "BFS", 18.487, 195, 195],
["big_maze", "DFS", 10.021, 497, 497],
["big_maze", "A*", 4.471, 195, 195],
["no_wall_maze", "BFS", 0.325, 15, 15],
["no_wall_maze", "DFS", 0.251, 29, 29],
["no_wall_maze", "A*", 0.396, 15, 15],
]
with open("results.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(results)

View File

@ -0,0 +1,13 @@
maze,strategy,time_ms,cells visited,path length
small_maze,BFS,0.173,15,15
small_maze,DFS,0.198,15,15
small_maze,A*,0.195,15,15
medium_maze,BFS,7.228,95,95
medium_maze,DFS,1.361,189,189
medium_maze,A*,3.05,95,95
big_maze,BFS,18.487,195,195
big_maze,DFS,10.021,497,497
big_maze,A*,4.471,195,195
no_wall_maze,BFS,0.325,15,15
no_wall_maze,DFS,0.251,29,29
no_wall_maze,A*,0.396,15,15
1 maze strategy time_ms cells visited path length
2 small_maze BFS 0.173 15 15
3 small_maze DFS 0.198 15 15
4 small_maze A* 0.195 15 15
5 medium_maze BFS 7.228 95 95
6 medium_maze DFS 1.361 189 189
7 medium_maze A* 3.05 95 95
8 big_maze BFS 18.487 195 195
9 big_maze DFS 10.021 497 497
10 big_maze A* 4.471 195 195
11 no_wall_maze BFS 0.325 15 15
12 no_wall_maze DFS 0.251 29 29
13 no_wall_maze A* 0.396 15 15

View File

@ -0,0 +1,10 @@
##########
#S #
# ###### #
# # #
###### # #
# # #
# ###### #
# #
# ######E#
##########