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

68 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Поиск выхода из лабиринта
Объектно-ориентированная реализация поиска пути в лабиринте с паттернами GoF:
Builder, Strategy, Observer и Command.
## Что реализовано
- модель `Cell` и `Maze`;
- загрузка лабиринта из текстового файла через `TextFileMazeBuilder`;
- стратегии поиска пути: BFS, DFS, A*, Дейкстра;
- `MazeSolver`, который измеряет время, число посещенных клеток и длину пути;
- консольный `Observer` для сообщений и отрисовки;
- `MoveCommand` и `Player` для ручного режима с undo;
- генератор тестовых лабиринтов;
- экспериментальный скрипт, CSV и SVG-графики;
- отчет: `reports/report.md`.
## Формат лабиринта
```text
# - стена
- проход
S - старт
E - выход
2, 3, ~ - проходимые клетки с увеличенным весом
```
Все строки в файле лабиринта должны иметь одинаковую длину.
## Запуск
```bash
python3 scripts/generate_mazes.py
python3 main.py --maze data/mazes/small.txt --strategy astar --render
```
Доступные стратегии:
```text
bfs
dfs
astar
dijkstra
```
Ручной режим с командами `W/A/S/D`, undo через `Z`:
```bash
python3 main.py --maze data/mazes/small.txt --manual
```
## Эксперименты
```bash
python3 scripts/run_experiments.py
```
Скрипт перегенерирует лабиринты, запускает каждую стратегию 10 раз и сохраняет:
- `reports/results.csv`;
- SVG-графики в `reports/charts/`.
## Проверка
```bash
python3 -m unittest
```