Introducción
Escriba un solucionador para los acertijos de Hitori utilizando menos bytes.
Reto
Tu tarea es escribir un solucionador para los rompecabezas lógicos Hitori (ひ と り, la palabra para "solo" en japonés; el significado del nombre del juego es "Déjame en paz"). Las reglas son las siguientes:
- Se le presenta una cuadrícula de celdas n por n, cada celda contiene un número entero entre 1 yn (inclusive).
- Su objetivo es asegurarse de que ningún número aparezca más de una vez en cada fila y cada columna de la cuadrícula, eliminando los números de la cuadrícula dada, sujeto a la restricción indicada en las siguientes dos reglas,
- No puede eliminar dos números de dos celdas adyacentes (horizontal o verticalmente).
- Las celdas numeradas restantes deben estar conectadas entre sí. Significa que dos celdas numeradas restantes se pueden conectar con una curva que se compone únicamente de segmentos que conectan números restantes adyacentes (horizontal o verticalmente). (Gracias a @ user202729 por señalar que falta esto)
Espero que las reglas estén claras por ahora. Si no hay algo claro sobre las reglas, consulte la página de Wikipedia .
Casos de prueba
Las celdas de las que se eliminan los números se representan con 0.
Input -> Output
4
2 2 2 4 0 2 0 4
1 4 2 3 -> 1 4 2 3
2 3 2 1 2 3 0 1
3 4 1 2 3 0 1 2
4
4 2 4 3 0 2 4 3
4 1 1 2 -> 4 1 0 2
3 1 2 1 3 0 2 1
4 3 1 3 0 3 1 0
5
1 5 3 1 2 1 5 3 0 2
5 4 1 3 4 5 0 1 3 4
3 4 3 1 5 -> 3 4 0 1 5
4 4 2 3 3 4 0 2 0 3
2 1 5 4 4 2 1 5 4 0
8
4 8 1 6 3 2 5 7 0 8 0 6 3 2 0 7
3 6 7 2 1 6 5 4 3 6 7 2 1 0 5 4
2 3 4 8 2 8 6 1 0 3 4 0 2 8 6 1
4 1 6 5 7 7 3 5 -> 4 1 0 5 7 0 3 0
7 2 3 1 8 5 1 2 7 0 3 0 8 5 1 2
3 5 6 7 3 1 8 4 0 5 6 7 0 1 8 0
6 4 2 3 5 4 7 8 6 0 2 3 5 4 7 8
8 7 1 4 2 3 5 6 8 7 1 4 0 3 0 6
9
8 6 5 6 8 1 2 2 9 8 0 5 6 0 1 2 0 9
5 6 2 4 1 7 9 8 3 5 6 2 4 1 7 9 8 3
5 8 2 5 9 9 8 2 6 0 8 0 5 0 9 0 2 0
9 5 6 6 4 3 8 4 1 9 5 6 0 4 3 8 0 1
1 1 6 3 9 9 5 6 2 -> 0 1 0 3 9 0 5 6 2
1 1 4 7 3 8 3 8 6 1 0 4 7 0 8 3 0 6
3 7 4 1 2 6 4 5 5 3 7 0 1 2 6 4 5 0
3 3 1 9 8 7 7 4 5 0 3 1 9 8 0 7 4 5
2 9 7 5 3 5 9 1 3 2 9 7 0 3 5 0 1 0
Estos casos de prueba están tomados de Concept Is Puzzles , PuzzleBooks , Concept Is Puzzles , Wikipedia y Youtube , respectivamente.
Especificaciones
No necesita preocuparse por el manejo de excepciones.
Usted puede asumir que la entrada es siempre un rompecabezas válida con una única solución y se puede tomar ventaja de esto en la escritura de su código.
Este es el código de golf , gana el menor número de bytes.
4 <= n <= 9 (16 originalmente, cambiado a 9 siguiendo la sugerencia de Stewie Griffin, también ahorra algunos problemas en IO)
Puede tomar datos y proporcionar resultados a través de cualquier formulario estándar , y puede elegir el formato.
Algunas sugerencias para el formato de salida son (pero no está restringido a estas)
- Salida de la grilla final
- Salida de la cuadrícula que contiene todos los números eliminados
- Salida de una lista de coordenadas de uno de los anteriores
Como de costumbre, las lagunas predeterminadas se aplican aquí.
Relacionado (inspirado en este desafío): compruebe si todos los elementos de una matriz están conectados
Mi último desafío: extensión del juego de los sietes
4 <= n <= 16
, pero el caso de prueba más grande es paran=9
. Le sugiero que publique unn=16
caso de prueba o diga4 <= n <= 9
. Bonito desafío por cierto :)