Um meandro de preenchimento de grade é um caminho fechado que visita todas as células de uma grade quadrada pelo menos uma vez, nunca cruzando nenhuma borda entre células adjacentes mais de uma vez e nunca cruzando a si próprio. Por exemplo:
Uma vez preenchidas, cada célula da grade pode ser representada por um dos 8 blocos a seguir:
Numerados dessa maneira, os ladrilhos do meandro acima podem ser representados por esta matriz:
5 6 5 6
4 8 3 2
5 7 6 2
4 3 4 3
Sua tarefa é concluir um meandro de preenchimento de grade, devido a um conjunto incompleto de peças. Por exemplo, o meandro incompleto:
... que pode ser representado usando 0
s para blocos ausentes:
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
... poderia ser concluído assim:
... ou seja:
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
Especificações
- A entrada sempre terá pelo menos e, no máximo , blocos (não vazios), onde .
- Você pode usar qualquer conjunto de valores para representar os blocos, desde que especificados em sua resposta.
- Sua entrada e saída podem estar em qualquer formato e ordem, desde que especificadas na sua resposta.
- Pelo menos uma solução válida existirá para todas as entradas (ou seja, você não precisa lidar com entradas inválidas).
- Aplicam- se as regras de E / S padrão .
- As brechas padrão são proibidas.
- Explicações, mesmo para idiomas "práticos", são incentivadas.
Casos de teste
Entrada ( Θ ):
0 6 0 0
Saída ( Θ ):
5 6 4 3
Entrada ( Θ ):
5 6 5 6 4 0 3 2 5 7 6 2 4 3 4 3
Saída ( Θ ):
5 6 5 6 4 8 3 2 5 7 6 2 4 3 4 3
Entrada ( Θ ):
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
Saída ( Θ ):
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