60 lines
984 B
Python
60 lines
984 B
Python
from builders.text_file_maze_builder import TextFileMazeBuilder
|
|
|
|
from strategies.bfs_strategy import BFS
|
|
from strategies.dfs_strategy import DFSStrategy
|
|
from strategies.astar_strategy import AStarStrategy
|
|
|
|
from solver.maze_solver import MazeSolver
|
|
|
|
|
|
mazes = [
|
|
"small.txt",
|
|
"medium.txt",
|
|
"large.txt",
|
|
"no exit.txt",
|
|
"empty.txt"
|
|
]
|
|
|
|
strategies = [
|
|
BFS(),
|
|
DFSStrategy(),
|
|
AStarStrategy()
|
|
]
|
|
|
|
results = []
|
|
|
|
builder = TextFileMazeBuilder()
|
|
|
|
|
|
for maze_file in mazes:
|
|
|
|
maze = builder.build_from_file(
|
|
f"mazes/{maze_file}"
|
|
)
|
|
|
|
for strategy in strategies:
|
|
|
|
solver = MazeSolver(
|
|
maze,
|
|
strategy
|
|
)
|
|
|
|
stats = solver.solve()
|
|
|
|
stats.maze_name = maze_file
|
|
|
|
results.append(stats)
|
|
|
|
|
|
with open(
|
|
"experiments/results.csv",
|
|
"w"
|
|
) as file:
|
|
|
|
file.write(
|
|
"maze,strategy,time_ms,visited_cells,path_length\n"
|
|
)
|
|
|
|
for stat in results:
|
|
|
|
file.write(stat.to_csv_row()) |