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("Путь не найден")