Меандр, заполняющий сетку - это замкнутый путь, который посещает каждую ячейку квадратной сетки хотя бы один раз, никогда не пересекая границу между соседними ячейками более одного раза и никогда не пересекая себя. Например:
После заполнения каждая ячейка сетки может быть представлена одной из следующих 8 плиток:
Пронумерованные таким образом, плитки вышеупомянутого меандра могут быть представлены этой матрицей:
5 6 5 6
4 8 3 2
5 7 6 2
4 3 4 3
Ваша задача завершить заполнение сетки меандром, учитывая неполный набор плиток. Например, неполный меандр:
... который можно представить с помощью 0
s для отсутствующих плиток:
5 0 0 0 6
0 0 7 0 0
0 0 0 0 3
2 4 0 0 0
0 0 3 0 0
... может быть завершено так:
... то есть:
5 6 5 1 6
4 8 7 6 2
5 7 7 7 3
2 4 8 8 6
4 1 3 4 3
Характеристики
- На входе всегда будет по крайней мере и самое большее (непустых) тайлов, где .
- Вы можете использовать любой набор значений для представления плиток, если это указано в вашем ответе.
- Ваш ввод и вывод могут быть в любом формате и порядке, если это указано в вашем ответе.
- По крайней мере одно действительное решение будет существовать для всех входных данных (т.е. вам не нужно обрабатывать неправильные входные данные).
- Применяются стандартные правила ввода / вывода .
- Стандартные лазейки запрещены.
- Пояснения, даже для «практических» языков, приветствуются.
Контрольные примеры
Вход ( Θ ):
0 6 0 0
Выход ( Θ ):
5 6 4 3
Вход ( Θ ):
5 6 5 6 4 0 3 2 5 7 6 2 4 3 4 3
Выход ( Θ ):
5 6 5 6 4 8 3 2 5 7 6 2 4 3 4 3
Вход ( Θ ):
5 0 0 0 6 0 0 7 0 0 0 0 0 0 3 2 4 0 0 0 0 0 3 0 0
Выход ( Θ ):
5 6 5 1 6 4 8 7 6 2 5 7 7 7 3 2 4 8 8 6 4 1 3 4 3
code-golf
grid
graph-theory
Иордания
источник
источник
Ответы:
JavaScript (ES7),
236 ... 193185 байтВыходы путем изменения входной матрицы.
Попробуйте онлайн!
(включает некоторый код постобработки для печати результата как в виде матрицы, так и в виде плоского списка, совместимого с инструментом визуализации, предоставленным OP)
Результаты
Как?
переменные
Начальные проверки
А пока давайте предположим, что мы не вернулись к исходной точке.
Ищу дорогу
Последние 8 записей недействительны и опущены. Остальные 4 недействительные записи явно помечены дефисами.
Для справки ниже представлены декодированная таблица, компас и набор тайлов, представленные в тесте:
Проверка пути
Отсюда код JS:
Отформатированный источник
источник