Как генерировать трубы (трубки) лабиринт с некоторыми ограничениями

У меня есть карта размером 10х10.

Каждая ячейка карты может быть пустой или содержать сегмент трубы. Типы сегментов: прямая труба, колено трубы, труба и поперечная труба. Каждый сегмент, конечно, можно вращать и переворачивать, чтобы другие сегменты могли укладываться на него.

Я установил начальную и конечную ячейки — одну на [1,5], а другую на [10,5].

Мне нужно создать путь от начальной точки до конечной точки, но есть некоторые параметры, которые необходимо передать в генератор:

  1. Разрешенные типы: например, могут использоваться только прямые и коленные сегменты. Крест и т не допускаются.
  2. Допустимое количество используемых элементов. Например, от 15 до 25. Таким образом, генератор ДОЛЖЕН генерировать траекторию этого диапазона — не менее 15 и не более 25.

Я вижу две стратегии в целом:

  1. Создайте общий лабиринт (не считая, что он состоит из трубок), а затем «переведите» клетки в соответствующие сегменты трубок. Но я не могу контролировать тип сегментов и не могу контролировать количество элементов.
  2. Итеративно добавлять сегменты к текущей позиции. Например, у меня есть источник в [1,5]. Я могу добавить любой разрешенный тип сегмента в [2,5]. Затем я могу добавить любой разрешенный сегмент типа в [2, 4], [2, 6] или [3, 5] (произвольно) и так далее. Но проблема в том, как контролировать количество используемых элементов и как убедиться, что я подхожу к конечной точке.

Есть идеи?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]