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