Problema
Considere una cuadrícula de 3 por 3 de enteros no negativos. Para cada fila, ila suma de los enteros se establece en r_i. Del mismo modo, para cada columna, jla suma de los enteros en esa columna se establece en c_j.
La tarea es escribir código para enumerar todas las posibles asignaciones diferentes de enteros a la cuadrícula dadas las restricciones de suma de filas y columnas. Su código debe generar una asignación a la vez.
Entrada
Su código debe tomar 3 enteros no negativos que especifiquen las restricciones de fila y 3 enteros no negativos que especifiquen las restricciones de columna. Puede suponer que estos son válidos, es decir, que las restricciones de suma o fila son iguales a la suma de las restricciones de columna. Su código puede hacer esto de cualquier manera que sea conveniente.
Salida
Su código debe generar las diferentes cuadrículas 2d que calcula en cualquier formato legible por humanos que elija. Cuanto más bonita, mejor, por supuesto. La salida no debe contener cuadrículas duplicadas.
Ejemplo
Si todas las restricciones de fila y columna son exactamente, 1entonces solo hay 6diferentes posibilidades. Para la primera fila, puede poner una 1en cualquiera de las primeras tres columnas, para la segunda fila ahora hay 2alternativas y la última fila ahora está completamente determinada por las dos anteriores. Todo lo demás en la cuadrícula debe establecerse en 0.
Digamos que la entrada es 2 1 0para las filas y 1 1 1para las columnas. Usando el formato de salida encantador de APL, las posibles cuadrículas de enteros son:
┌─────┬─────┬─────┐
│0 1 1│1 0 1│1 1 0│
│1 0 0│0 1 0│0 0 1│
│0 0 0│0 0 0│0 0 0│
└─────┴─────┴─────┘
Ahora digamos que la entrada es 1 2 3para las filas y 3 2 1para las columnas. Las posibles cuadrículas de enteros son:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│0 0 1│0 0 1│0 0 1│0 1 0│0 1 0│0 1 0│0 1 0│1 0 0│1 0 0│1 0 0│1 0 0│1 0 0│
│0 2 0│1 1 0│2 0 0│0 1 1│1 0 1│1 1 0│2 0 0│0 1 1│0 2 0│1 0 1│1 1 0│2 0 0│
│3 0 0│2 1 0│1 2 0│3 0 0│2 1 0│2 0 1│1 1 1│2 1 0│2 0 1│1 2 0│1 1 1│0 2 1│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘