Problem
Rozważ kwadratową siatkę 3 na 3 liczb całkowitych nieujemnych. Dla każdego wiersza iustawiana jest suma liczb całkowitych r_i. Podobnie dla każdej kolumny justawiana jest suma liczb całkowitych w tej kolumnie c_j.
Zadanie polega na napisaniu kodu wyliczającego wszystkie możliwe różne liczby całkowite do siatki, biorąc pod uwagę ograniczenia sumy wierszy i kolumn. Twój kod powinien wyświetlać jedno zadanie na raz.
Wejście
Twój kod powinien przyjąć 3 nieujemne liczby całkowite określające ograniczenia wiersza i 3 nieujemne liczby całkowite określające ograniczenia kolumny. Możesz założyć, że są one poprawne, tzn. Że ograniczenia sumy lub wiersza są równe sumie ograniczeń kolumny. Twój kod może to zrobić w dowolny dogodny sposób.
Wynik
Twój kod powinien wypisywać różne siatki 2D, które oblicza, w dowolnym formacie czytelnym dla człowieka. Im ładniejsza, tym lepiej. Dane wyjściowe nie mogą zawierać zduplikowanych siatek.
Przykład
Jeśli wszystkie ograniczenia wierszy i kolumn są dokładnie takie same, 1istnieją tylko 6inne możliwości. W pierwszym rzędzie możesz umieścić a 1w dowolnej z pierwszych trzech kolumn, w drugim rzędzie są teraz 2alternatywy, a ostatni rząd jest teraz całkowicie określony przez poprzednie dwa. Wszystko inne w siatce powinno być ustawione na 0.
Powiedzmy, że dane wejściowe dotyczą 2 1 0wierszy i 1 1 1kolumn. Używając pięknego formatu wyjściowego APL, możliwe są następujące liczby całkowite:
┌─────┬─────┬─────┐
│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│
└─────┴─────┴─────┘
Powiedzmy teraz, że dane wejściowe dotyczą 1 2 3wierszy i 3 2 1kolumn. Możliwe siatki liczb całkowitych to:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│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│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘