import argparse from maze_app import AStarStrategy, BFSStrategy, ConsoleView, DFSStrategy, MazeSolver, TextFileMazeBuilder STRATEGIES = {"bfs": BFSStrategy, "dfs": DFSStrategy, "astar": AStarStrategy} def main(): parser = argparse.ArgumentParser(description="Поиск выхода из лабиринта") parser.add_argument("maze", nargs="?", default="mazes/small_10x10.txt") parser.add_argument("--algorithm", choices=STRATEGIES, default="bfs") args = parser.parse_args() maze = TextFileMazeBuilder().build_from_file(args.maze) view = ConsoleView() solver = MazeSolver(maze, STRATEGIES[args.algorithm]()) solver.attach(view) stats = solver.solve() print(view.render(maze, stats.path)) print(f"Время: {stats.time_ms:.4f} мс; посещено: {stats.visited_cells}; длина пути: {stats.path_length}") if __name__ == "__main__": main()