Oppure

Loading
18/12/07 16:30
ciao amici,
ho scoperto questo bellissimo forum ieri e mi è stato molto utile per risolvere un problema di interfaccia tra vb6 e ie7 per il mastermind che sto sviluppando.
ho sviluppato un risolutore, generatore e spiegatore di sudoku classico ed alcune varianti.
All'inizio avevo sviluppato io il codice per la forza bruta per contare le possibili soluzioni di uno schema, funzionava bene ma non era sufficientemente veloce, penso perchè usava matrici di textbox.
Poi per caso ho scoperto sulla rete un codice velocissimo che invece utilizza matrice di variabili e notazione binaria. risolve uno schema a soluzione unica mediamente in 30 millisecondi.
Se qualcuno è interessato possiamo continuare la discussione.
al punto attuale non conosco a quale punto del vostro progetto siete, per. es: come calcolate i candidati possibili per una cella?
quindi è difficile dare suggerimenti sui problemi che io ho incontrato (e sono stati molti) e su come li ho risolti.
ciao
gabriele
ps: per completare tutti i sudoku ho impiegato + di un anno, ma me lo posso permettere, sono pensionato e programmatore vb6 solo per hobby
Ultima modifica effettuata da 18/12/07 16:36
18/12/07 19:53
P4p3r0g4
avevo pensato anche io a forza bruta ma mi risultavano troppi casi anche facendo delle permutazioni
senza permutazioni gli schemi erano 9^81
che non deve ingannare in realta` e un 2 seguito da 77 zeri
e con le permutazioni il risutato e` nettamente minore ma non accettabile.
credo che la soluzione migliore sia la ricorsione,vero?
pesante ma sicura.
aaa
18/12/07 21:39
gantonio
Il Sudoku e' un problema classico per essere affrontato e risolto con la tecnica del "backtracking".

Per info leggere

en.wikipedia.org/wiki/…
aaa
19/12/07 10:37
sudopedia è un ottimo punto di partenza per saperne di più sul sudoku.
im effetti la forza bruta ultilizzata, penso da tutti i risolutori, è un back tracking recursivo.
si continua a chiamarlo forza bruta per tradizione.
si parte da uno schema con n esposti (18-30 numeri noti).
una sub velocissima elimina per ogni noto il candidato da riga colonna e settore.
si memorizza la situazione.
si comincia a provare tutti i candidati a partire dalla prima cella vuota. quando si prova un candidato, lo stesso viene eliminato da riga colonna e settore.
si procede fino all'errore o alla soluzione.
si ripristina la situazione salvata e si prova il candidato successivo.
Ultima modifica effettuata da 19/12/07 10:41
20/12/07 14:55
natamas
TUTTO OK, L'HO FATTO.....GRAZIE UGUALMENTE PER IL VOSTRO AIUTO:k:
aaa