maze
Описание
Реализация консольной утилиты для генерации и решения лабиринтов.
Языки
- Python100%
maze
Задание:
Реализация консольной утилиты для генерации и решения лабиринтов.
Предусмотреть:
- Интерфейс командной строки (CLI) или графический интерфейс
- Возможность указывать размеры лабиринта (изображения)
- Генерацию лабиринта и сохранение его в виде изображения jpg, png (выходной файл указывает пользователь)
- Сохранение лабиринта в виде любого текстового формата
- Загрузку лабиринта из текстового файла
Решение:
Алгоритм двоичного дерева (генерация):
Проходим по каждой ячейке лабиринта
Для каждой ячейки случайно выбираем направление: вверх или вправо
Прокладываем проход в выбранном направлении
Получается лабиринт с уклоном в одну сторону, но гарантированно проходимый
Алгоритм Ли (решение):
Используем поиск в ширину (BFS)
Распространяем "волну" от стартовой точки
Каждая ячейка получает номер шага, на котором до нее дошли
Восстанавливаем путь от конечной точки к начальной, выбирая соседей с меньшим номером
maze.py:
Модуль для генерации и решения лабиринтов.
Генерация: алгоритм двоичного дерева.
Решение: алгоритм Ли (волновой алгоритм, BFS).
files_work.py
Модуль для сохранения и загрузки лабиринтов в текстовом формате.
images_work.py
Модуль для создания изображений лабиринтов (PNG/JPG).
main.py
CLI-утилита для генерации и решения лабиринтов.
Команды:
generate: сгенерировать лабиринт (опционально сохранить изображение/текст и решить)
solve: загрузить лабиринт из текста и решить (опционально сохранить изображение)
Генерация изображения: python main.py generate --width 10 --height 10 --image maze.png
Генерация текста: python main.py generate --width 10 --height 10 --text maze.txt
Решение из файла: python main.py solve --input maze.txt --image solution.png --show