2026-rff_mp/shahovaa/zadanie 2/README.md
2026-05-19 22:39:51 +03:00

1.9 KiB
Raw Blame History

Поиск выхода из лабиринта

Объектно-ориентированная реализация поиска пути в лабиринте с паттернами GoF: Builder, Strategy, Observer и Command.

Что реализовано

  • модель Cell и Maze;
  • загрузка лабиринта из текстового файла через TextFileMazeBuilder;
  • стратегии поиска пути: BFS, DFS, A*, Дейкстра;
  • MazeSolver, который измеряет время, число посещенных клеток и длину пути;
  • консольный Observer для сообщений и отрисовки;
  • MoveCommand и Player для ручного режима с undo;
  • генератор тестовых лабиринтов;
  • экспериментальный скрипт, CSV и SVG-графики;
  • отчет: reports/report.md.

Формат лабиринта

# - стена
  - проход
S - старт
E - выход
2, 3, ~ - проходимые клетки с увеличенным весом

Все строки в файле лабиринта должны иметь одинаковую длину.

Запуск

python3 scripts/generate_mazes.py
python3 main.py --maze data/mazes/small.txt --strategy astar --render

Доступные стратегии:

bfs
dfs
astar
dijkstra

Ручной режим с командами W/A/S/D, undo через Z:

python3 main.py --maze data/mazes/small.txt --manual

Эксперименты

python3 scripts/run_experiments.py

Скрипт перегенерирует лабиринты, запускает каждую стратегию 10 раз и сохраняет:

  • reports/results.csv;
  • SVG-графики в reports/charts/.

Проверка

python3 -m unittest