import csv import os from maze_solver import ( TextFileMazeBuilder, MazeSolver, BFSStrategy, DFSStrategy, AStarStrategy ) REPEATS = 5 MAZES = [ "simple.txt", "dead.txt", "large.txt", "empty.txt", "noexit.txt" ] STRATEGIES = [ ("BFS", BFSStrategy()), ("DFS", DFSStrategy()), ("A*", AStarStrategy()) ] def average(values): return sum(values) / len(values) def run(): builder = TextFileMazeBuilder() results = [] for maze_name in MAZES: filename = os.path.join("lab2", "mazes", maze_name) print("Maze:", maze_name) for strategy_name, strategy in STRATEGIES: times = [] visited = [] path_lengths = [] for _ in range(REPEATS): maze = builder.build_from_file(filename) solver = MazeSolver(maze, strategy) stats = solver.solve() times.append(stats.time_ms) visited.append(stats.visited_count) path_lengths.append(stats.path_length) results.append([ maze_name, strategy_name, average(times), average(visited), average(path_lengths) ]) print( strategy_name, "time =", average(times), "visited =", average(visited), "path =", average(path_lengths) ) os.makedirs("lab2/docs/data", exist_ok=True) with open( "lab2/docs/data/results.csv", "w", newline="", encoding="utf-8" ) as file: writer = csv.writer(file) writer.writerow([ "maze", "strategy", "time_ms", "visited_cells", "path_length" ]) writer.writerows(results) print("Results saved to lab2/docs/data/results.csv") if __name__ == "__main__": run()