Problema
Considera una griglia quadrata 3 per 3 di numeri interi non negativi. Per ogni riga iviene impostata la somma degli interi r_i. Allo stesso modo per ogni jcolonna è impostata la somma degli interi in quella colonna c_j.
Il compito è scrivere codice per enumerare tutte le possibili diverse assegnazioni di numeri interi alla griglia dati i vincoli di somma di riga e colonna. Il tuo codice dovrebbe generare un compito alla volta.
Ingresso
Il codice deve assumere 3 numeri interi non negativi che specificano i vincoli di riga e 3 numeri interi non negativi che specificano i vincoli di colonna. Si può presumere che siano validi, ovvero che i vincoli di somma o riga siano uguali alla somma dei vincoli di colonna. Il tuo codice può farlo in qualsiasi modo sia conveniente.
Produzione
Il tuo codice dovrebbe generare le diverse griglie 2D che calcola in qualsiasi formato leggibile dall'uomo che preferisci. Più carina è, meglio ovviamente. L'output non deve contenere griglie duplicate.
Esempio
Se tutti i vincoli di riga e colonna sono esattamente 1allora ci sono solo 6diverse possibilità. Per la prima riga puoi inserire a 1in una delle prime tre colonne, per la seconda riga ora ci sono 2alternative e l'ultima riga è ora completamente determinata dalle due precedenti. Tutto il resto nella griglia dovrebbe essere impostato su 0.
Supponiamo che l'input sia 2 1 0per le righe e 1 1 1per le colonne. Usando l'adorabile formato di output di APL, le possibili griglie di interi sono:
┌─────┬─────┬─────┐
│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│
└─────┴─────┴─────┘
Ora supponiamo che l'input sia 1 2 3per le righe e 3 2 1per le colonne. Le possibili griglie intere sono:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│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│
└─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘