Problema
Considere uma grade quadrada de 3 por 3 de números inteiros não negativos. Para cada linha, ia soma dos números inteiros é configurada para ser r_i. Da mesma forma, para cada coluna, ja soma dos números inteiros nessa coluna está configurada para ser c_j.
A tarefa é escrever código para enumerar todas as possíveis atribuições diferentes de números inteiros para a grade, dadas as restrições de soma de linhas e colunas. Seu código deve gerar uma atribuição por vez.
Entrada
Seu código deve usar 3 números inteiros não negativos, especificando as restrições de linha e 3 números inteiros não negativos, especificando as restrições de coluna. Você pode assumir que eles são válidos, ou seja, que as restrições de soma ou linha são iguais à soma das restrições de coluna. Seu código pode fazer isso da maneira que for mais conveniente.
Resultado
Seu código deve gerar as diferentes grades 2D que ele calcula em qualquer formato legível por humanos de sua escolha. Quanto mais bonito, melhor, é claro. A saída não deve conter grades duplicadas.
Exemplo
Se todas as restrições de linha e coluna forem exatamente, 1então existem apenas 6possibilidades diferentes. Para a primeira linha, você pode colocar um 1em qualquer uma das três primeiras colunas, para a segunda linha agora existem 2alternativas e a última linha agora é completamente determinada pelas duas anteriores. Tudo o resto na grade deve ser definido como 0.
Digamos que a entrada seja 2 1 0para as linhas e 1 1 1para as colunas. Usando o adorável formato de saída da APL, as possíveis grades inteiras são:
┌─────┬─────┬─────┐
│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│
└─────┴─────┴─────┘
Agora diga que a entrada é 1 2 3para as linhas e 3 2 1para as colunas. As possíveis grades inteiras são:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│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│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘