25 lines
910 B
Python
25 lines
910 B
Python
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()
|