2026-rff_mp/pogodinda/lab2/tests/test_strategy.py

34 lines
1.2 KiB
Python

from src.maze_builder import TextFileMazeBuilder
from src.pathfinding import BFSStrategy, DFSStrategy, AStarStrategy, DijkstraStrategy
# Загружаем лабиринт
builder = TextFileMazeBuilder()
maze = builder.build_from_file("data/demo_maze.txt")
print("Лабиринт:")
print(maze)
print(f"\nСтарт: ({maze.start.x}, {maze.start.y})")
print(f"Выход: ({maze.exit.x}, {maze.exit.y})")
# Тестируем все алгоритмы
strategies = [BFSStrategy(), DFSStrategy(), AStarStrategy(), DijkstraStrategy()]
for strategy in strategies:
print(f"\n{'='*40}")
print(f"Алгоритм: {strategy.get_name()}")
print('='*40)
path, visited = strategy.find_path(maze, maze.start, maze.exit)
print(f"Посещено клеток: {visited}")
print(f"Длина пути: {len(path)}")
if path:
print("Путь найден!") # ← убрал f, или добавь переменную
if len(path) > 10:
print(f"Начало: {[(c.x, c.y) for c in path[:5]]}...")
print(f"Конец: ...{[(c.x, c.y) for c in path[-5:]]}")
else:
print(f"Путь: {[(c.x, c.y) for c in path]}")
else:
print("Путь не найден")