fundo
Tatamibari é um quebra-cabeça lógico projetado por Nikoli.
Um quebra-cabeça Tatamibari é jogado em uma grade retangular com três tipos diferentes de símbolos:: +
, -
. e|
. O solucionador deve particionar a grade em regiões retangulares ou quadradas de acordo com as seguintes regras:
- Cada partição deve conter exatamente um símbolo nela.
- UMA
+
símbolo deve estar contido em um quadrado. - UMA
|
símbolo deve estar contido em um retângulo com uma altura maior que largura. - UMA
-
símbolo deve estar contido em um retângulo com largura maior que altura. - Quatro peças nunca podem compartilhar o mesmo canto. (É assim que as telhas de tatami japonesas geralmente são colocadas.)
A seguir, é apresentado um exemplo de quebra-cabeça, com uma solução:
Tarefa
Resolva o quebra-cabeça Tatamibari.
Entrada e saída
A entrada é uma grade 2D que representa o quebra-cabeça Tatamibari. Cada célula contém um dos quatro personagens: +
, -
, |
, e um personagem de sua escolha para representar uma célula não-pista. Nos casos de teste, um asterisco *
é usado.
Você pode escolher qualquer formato de saída adequado que possa representar inequivocamente qualquer solução válida para um quebra-cabeça Tatamibari. Isso inclui, mas não se limita a: (em caso de dúvida, pergunte nos comentários.)
- Uma lista de quatro tuplas, em que cada tupla inclui o índice superior, o índice esquerdo, a largura e a altura de um retângulo (ou qualquer representação equivalente)
- Uma grade numérica da mesma forma que a entrada, em que cada número representa um retângulo
- Uma lista de conjuntos de coordenadas, em que cada conjunto inclui todas as coordenadas das células em um retângulo
Se um quebra-cabeça tiver várias soluções, você poderá gerar qualquer número (uma ou mais) de suas soluções válidas. A entrada é garantida para ter pelo menos uma solução.
Casos de teste
Puzzle:
|-*
*+|
*-*
Solution:
122
134
554
=====
Puzzle:
+***
**|*
*+**
***-
Solution:
1122
1122
3322
3344
======
Puzzle:
|*+*+
*****
****-
***+|
+****
Solution:
12233
12233
44444
55667
55667
=======
Puzzle:
****-**
**-**|*
*|*****
****-**
*******
**+*|**
*****+*
One possible solution:
1122222
1133344
1155544
1155544
6667744
6667788
6667788
===========
Puzzle:
*-****|+**
+*-******|
****+*****
*-******||
**++|*****
+****-|***
-****-**+*
********-*
|*+*+|****
*-*--**+*+
Solution:
1111122334
5666622334
7777822994
7777A2299B
CCDEA2299B
CCFFFFGGHH
IIIIJJGGHH
KLLMMNGGOO
KLLMMNGGPP
QQRRSSSTPP
Regras
Aplicam-se as regras de código-golfe padrão . O código mais curto em bytes vence.