34 lines
1.1 KiB
Markdown
34 lines
1.1 KiB
Markdown
|
|
# Задание 2. Поиск выхода из лабиринта (паттерны GoF)
|
|||
|
|
|
|||
|
|
Применены 4 паттерна: **Builder**, **Strategy**, **Observer**, **Command**.
|
|||
|
|
|
|||
|
|
## Как запустить
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 1) сгенерировать тестовые лабиринты
|
|||
|
|
python3 generate_mazes.py
|
|||
|
|
python3 generate_weighted_choice.py
|
|||
|
|
|
|||
|
|
# 2) демонстрация всех паттернов на маленьком лабиринте
|
|||
|
|
python3 demo.py
|
|||
|
|
|
|||
|
|
# 3) эксперимент: 7 запусков × 4 стратегии × 7 лабиринтов
|
|||
|
|
python3 experiment.py
|
|||
|
|
# результат -> docs/data/results.csv
|
|||
|
|
|
|||
|
|
# 4) графики
|
|||
|
|
python3 plot_results.py
|
|||
|
|
# результат -> docs/data/plots/*.png
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Формат лабиринта (текстовый)
|
|||
|
|
|
|||
|
|
| Символ | Что означает |
|
|||
|
|
| --- | --- |
|
|||
|
|
| `#` | стена |
|
|||
|
|
| ` ` (пробел) или `.` | проход, вес 1 (асфальт) |
|
|||
|
|
| `,` | проход, вес 2 (песок) |
|
|||
|
|
| `~` | проход, вес 3 (болото) |
|
|||
|
|
| `S` | старт (ровно один) |
|
|||
|
|
| `E` | выход (ровно один) |
|