Este reto se basa en el siguiente enigma: se le da una n
por n
cuadrícula con n
células marcadas. Su trabajo consiste en dividir la cuadrícula en n
partes donde cada parte consta de exactamente n
celdas, 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 n
coordenadas 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