2026-rff_mp/SmirnovVS/docs/data/2-nd-exercize/main.py
2026-09-04 17:37:01 +00:00

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()