Напишите программу, которая генерирует и печатает случайный лабиринт, используя алгоритм по вашему выбору. Лабиринт должен быть разным для нескольких прогонов программы. Высота и ширина указываются в качестве аргументов командной строки. Используйте |
для вертикальной стены, -
для горизонтальной стены и +
для угла. Лабиринт ограничен стенами, а входы отмечены отсутствующей стеной. Лабиринт содержит сокровища, #
которые должны быть доступны по крайней мере из одного входа.
$ python2 random-maze.py 4 5
+-+-+
|#|
| |
+---+
code-challenge
ascii-art
maze
Александр
источник
источник
*
или есть два отдельных входа? 2: Вы должны вероятно указать, что выход должен быть достижимым.Ответы:
Я думаю, что технически это не генератор лабиринта, но он создает результат, подобный лабиринту: https://gist.github.com/803450 .
Там есть какой-то ужасный код, который я знаю, и он работает только наполовину, и результат выглядит не совсем правильно, если стены торчат из других стен. Но это достаточно близко, что я не могу быть обеспокоен исправлением остальных.
Пример вывода:
источник
Python, 375 символов
Это создает лабиринт с одним входом и случайно размещенным сокровищем. Лабиринт - это простой бинарный лабиринт деревьев .
источник
Ruby 1.9.2p136: 90
Выход
Эй, никто не сказал, что это должен быть хороший лабиринт. Хорошо, хорошо, я сделаю настоящий сейчас.
источник
#!/usr/bin/env python
, например, в свой код. Как я сказал, я тоже напишу реальное решение, это просто указывало на низкое качество самого вопроса (и многих других) и демонстрирует, что нам нужно иметь более четкие рекомендации. И, наконец, указание на вопрос не делает ответ на вопрос актуальными правилами для сайта. Но хорошо, вот ваша новая версия ...С 844
Тестировать:
3x3
7x8
18x20
источник
Вот простое решение Java:
Некоторые примеры результатов:
3x3:
4x4:
4x5:
5x5:
5x8:
8x15:
источник