Различия между версиями 3 и 4
Версия 3 от 2019-12-31 22:42:23
Размер: 2583
Редактор: FrBrGeorge
Комментарий:
Версия 4 от 2020-01-16 10:40:37
Размер: 2626
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 4: Строка 4:
 * не должно быть недоступных комнат,  * в проходимом лабиринте не должно быть недоступных комнат,

Написать генератор «достаточно случайного» двумерного лабиринта, в котором стены представлены символом '#', а комнаты/коридоры — '.'. Программа вводит три числа через запятую — ширину и высоту лабиринта (нечётные), а также — должен ли он быть проходим из левого верхнего угла в правый нижний (1 — должен, 0 — нет). Выводится сам лабиринт. Разумеется, не такой, как в примере, тестирующая программа будет проверять следующтие свойства:

  • в проходимом лабиринте не должно быть недоступных комнат,
  • не должно быть сплошных блоков из стен или комнат размером 2×2
  • лабиринт может не иметь циклических/альтернативных путей (в том числе, может никогда их не иметь)

  • для построения непроходимого дабиринта недостаточно заткнуть вход или выход в районе левого верхнего/правого нижнего углов (это можно получиться только случайно)
  • алгоритм не обязан быть «полностью» случайным (в примерах видно, что мой алгоритм любит ходить вдоль стен :) )

  • (далее см. подсказки)

13,11,1

.#...#.......
.###.#.#.###.
...#...#.#.#.
##.#####.#.#.
.#.....#.#...
.#####.#.####
...#.#.#.....
.#.#.#.#.###.
.#...#.#.#...
.#####.###.#.
...........#.

Подсказки (для алгоритма, который построил этот лабиринт):

  • Общая идея: рыть (почти) случайный тоннель от входа до выхода, избегая докапывания до уже прорытых частей
    • В спойлере — как сделать лабиринт непроходимым
  • Обратите внимание на чётность/нечётность координат «длинных стен» и «коридоров»
  • And finally: Спойлер


CategoryHomework

LecturesCMC/PythonIntro2019/Homework_NiceLab (последним исправлял пользователь FrBrGeorge 2020-01-16 10:40:37)