# Задание 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` | выход (ровно один) |
