Forum >> Principianti >> QUADRATO MAGICO 3X3

Pagina: Indietro 1 2

uh sì, era quello che più o meno mi aspettavo che facesse, a occhio. Ovviamente il codice scritto in questo modo è faticosissimo da verificare, ma facendolo girare vedo che effettivamente sforna 7040 soluzioni, che è il numero giusto, e verificandone a caso due o tre sono corrette...

Il modo giusto di verificare l'esattezza del codice sarebbe, beninteso, passare ogni soluzione a una funzione che *verifica* che quello sia effettivamente un quadrato magico. Se scrivessi una funzione di verifica di questo tipo (esercizio banale), incidentalmente scriveresti anche la soluzione del problema posto all'inizio dall'OP.


Detto questo, il problema resta lo stesso. Quel codice ha senso solo per i quadrati 4x4. Bisognerebbe scrivere qualcosa che generalizza il problema...

E qui però viene il dubbio, lo ammetto... importa davvero? Voglio dire, in linea di principio, diciamo "a livello didattico", è giusto dire che il tuo codice non va bene e che dovresti provare a generalizzarlo. Ma a livello pratico, se anche riuscissi a generalizzare il problema, non potresti comunque usare la tua funzione per generare tutte le soluzioni di ordine superiore, diciamo, al 5 se va bene... semplicemente perché ce ne sono troppi e il tempo di esecuzione sarebbe interminabile.


Di conseguenza tu avresti fatto una certa fatica per scrivere una funzione generalizzata, magari molto elegante, che però in pratica ti serve solo a estrarre le soluzioni per N=3, 4 e (forse) 5. Non è proprio una prospettiva fantastica, ammettiamolo.


In definitiva, direi che è un problema troppo complicato per valerne la pena didatticamente, e troppo poco utile per valerne la pena in pratica.


A livello didattico, un buon esercizio è quello effettivamente proposto dal libro: implementare il "metodo siamese" per costruire almeno un quadrato di ordine qualsiasi, purché dispari. Un altro buon esercizio è quello proposto dall'OP: scrivere una funzione che verifichi che un quadrato è magico... L'OP si accontenta di verificare quadrati di ordine 3, ma direi che non costa niente generalizzare il problema: verificare quadrati di ordine qualsiasi.



Pagina: Indietro 1 2



Esegui il login per scrivere una risposta.