Меандр, заполняющий сетку - это замкнутый путь, который посещает каждую ячейку квадратной сетки хотя бы один раз, никогда не пересекая границу между соседними ячейками более одного раза и никогда не пересекая себя. Например:
После заполнения каждая ячейка сетки может быть представлена одной из следующих 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