Este reto se basa en el siguiente enigma: se le da una npor ncuadrícula con ncélulas marcadas. Su trabajo consiste en dividir la cuadrícula en npartes donde cada parte consta de exactamente nceldas, cada una de las cuales contiene exactamente una celda marcada.
Ejemplo
Aquí hay un rompecabezas a la izquierda y su solución (única) a la derecha:
Desafío
Se le dará un conjunto de ncoordenadas indexadas a cero en cualquier formato razonable.
[(0,0), (0,3), (1,0), (1,1), (2,2)]
Y su trabajo es escribir un programa que devuelva cualquier parición válida (nuevamente, en cualquier formato razonable).
[
[(0,0), (0,1), (0,2), (1,2), (1,3)],
[(0,3), (0,4), (1,4), (2,4), (3,4)],
[(1,0), (2,0), (3,0), (4,0), (4,1)],
[(1,1), (2,1), (3,1), (3,2), (4,2)],
[(2,2), (2,3), (3,3), (4,3), (4,4)]
]
Si el rompecabezas no tiene solución, el programa debe indicarlo arrojando un error o devolviendo una solución vacía.
Ejemplos de entrada / salida
[(0,0)] => [[(0,0)]]
[(0,0), (1,1)] => [
[(0,0), (1,0)],
[(0,1), (1,1)]
]
[(0,0), (0,1), (1,0)] => [] (no solution)
[(0,0), (0,1), (0,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (1,1), (2,1)],
[(0,2), (1,2), (2,2)],
]
[(0,0), (0,2), (1,2)] => [
[(0,0), (1,0), (2,0)],
[(0,1), (0,2), (1,1)],
[(1,2), (2,1), (2,2)],
]
Puntuación
Este es el código de golf , por lo que gana el código más corto.
code-golf
combinatorics
grid
set-partitions
Peter Kagey
fuente
fuente



Respuestas:
JavaScript (ES7), 166 bytes
Pruébalo en línea!
¿Cómo?
++Probamosa [ n ] a [ j ]
La parte principal desol metro
fuente