Реализовать консольную утилиту (или приложение с графическим интерфейсом) для генерации и решения лабиринтов.
Предусмотреть:
- Интерфейс командной строки (CLI) или графический интерфейс
- Возможность указывать размеры лабиринта (изображения)
- Генерацию лабиринта и сохранение его в виде изображения
jpg
,png
(выходной файл указывает пользователь) - Сохранение лабиринта в виде любого текстового формата
- Загрузку лабиринта из текстового файла
- Загрузку лабиринта из изображения
- Решение лабиринта
- Вывод пути от начальной до конечной точек
- Покрыть тестами генерацию и решение лабиринта
- *Генерация гифки построения и решения лабиринта
- Алгоритм Эйлера
- Алгоритм Краскала
- Алгоритм двоичного дерева
- Алгоритм Прима
- Алгоритм «Sidewinder»
- Рекурсивный алгоритм сегментации
- А*
- Best-first search
- Jump Point Search
- Поиск в глубину (DFS, Depth-first search)
- Алгоритм Дейкстры
- Алгоритм Левита
- Поиск в ширину (BFS, Breadth-first search)
- Алгоритм Ли (Волновой алгоритм)
Реализуйте модуль maze.py
с функциями генерации и решения лабиринта.
Функция генерации должна принимать размеры лабиринта, а также дополнительные параметры алгоритма (по необходимости) и возвращать лабиринт в любом удобном представлении, например в виде двумерного массива или графа.
Функция решения должна принимать представление лабиринта, а также дополнительные параметры алгоритма (по необходимости) и возвращать его решение в любом удобном представлении, например, в виде массива точек или графа.
Остальной функционал (чтение, запись в файл, генерация изображения и другие) должен располагаться в соответствующих функциях.
Оценка выставляется в соответствии со следующими требованиями:
- Общие требования:
- код работы проходит проверку утилитой
pylint
с конфигурационным файлом.pylintrc
. - код работы успешно проходит тесты, если таковые имеются.
- наличие документации к функциям, методам, классам и модулям.
- код работы проходит проверку утилитой
- На оценку 3 балла реализовать:
- все вышеперечисленное;
- пункты 1, 2, 3, 7 и 8.
- На оценку 4 балла дополнительно реализовать:
- все вышеперечисленное;
- пункты 4 и 5;
- На оценку 5 балла:
- реализовать все требования, указанные в описании к работе, кроме 10.
- Плюс в карму:
- все вышеперечисленное;
- пункт 10;
- Best-first search
- Eller's Algorithm
- Maze Generation: Eller's Algorithm
- Как пройти через лабиринт не заблудившись
- Поиск A*
- Dijkstra's algorithm
- Алгоритм Левита
- Алгоритм Ли
- Floyd–Warshall algorithm
- Bellman–Ford algorithm
- Shortest Path
- Алгоритм поиска пути Jump Point Search
- Классические алгоритмы генерации лабиринтов. Часть 1: вступление
- Классические алгоритмы генерации лабиринтов. Часть 2: погружение в случайность
- Алгоритм Эллера для генерации лабиринтов
- Maze Classification
- Алгоритм поиска путей в лабиринте
- Методы программирования. Обходы графа
- Генерация и решение лабиринта с помощью метода поиска в глубину по графу
- Алгоритм Эйлера на C++
- Реализация и визуализация четырех алгоритмов генерации лабиринта
- Maze generation algorithm
- Maze Generation: Sidewinder algorithm
- Kruskal's algorithm
- Лабиринты: классификация, генерирование, поиск решений
- OBLIGE Level Maker
- Bake Your Own 3D Dungeons With Procedural Recipes