cs_Mafassure
Messages postés1058Date d'inscriptionjeudi 24 juillet 2003StatutModérateurDernière intervention14 février 2009
-
29 mai 2006 à 22:07
AFPA2003
Messages postés35Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention22 mai 2013
-
22 mai 2013 à 00:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
AFPA2003
Messages postés35Date d'inscriptionvendredi 4 avril 2003StatutMembreDernière intervention22 mai 2013 22 mai 2013 à 00:10
Et s'il y a plusieurs solutions :
- la grille est validée quand même
- il n'accepte pas d'autres solutions
exemple :
000057200804000030002030058700006001060079340001000005307400080000300000000705023
ma solution :
139857264854621937672934158723546891568179342491283675317462589245398716984715423
Est-il possible d'adapter ce code pour ces autres grilles de sudoku ?
J'ai quelques notions de vb et aucune en flash
cs_goldenboy68
Messages postés1596Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention 9 juin 20112 6 juin 2006 à 14:17
...j'ai pas pu m'empêcher, donc en fait mea culpa! Ma lecture n'était pas diagonale, mais elle n'est pas allée plus loin que la méthode à effet de bord!
Bref c'est nickel !
@+
cs_goldenboy68
Messages postés1596Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention 9 juin 20112 6 juin 2006 à 13:41
j'ai lu le code en diagonale et j'ai cru que tu cherchais les cases où il n'y avait qu'une possibilité pour y mettre qqch...
Vais la relire tranquillement ce soir!
@+!
kingcobra
Messages postés316Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention19 septembre 2012 6 juin 2006 à 13:35
salut !
t'as lu le code ?
tout ce que tu décris est déjà fait et en mieux.
Le code résoud absolument toutes les grilles. (meme les vides)
Dans le cas ou une est impossible, c a d que les chiffres sont placés de manière à ne pas pouvoir finir la grille, alors il ne finira pas de la résoudre puisqu'il peut pas.
cs_goldenboy68
Messages postés1596Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention 9 juin 20112 6 juin 2006 à 10:28
S'il y a un cas où le code ne peut pas choisir il faudrait partir dans une autre boucle. Moi je verrais bien un array qui stockerait les possibilités d'une case (laquelle? p-ê une de celles où il y a le plus de possibilités).
ensuite on fait une copie de la grille à l'état où ça bloque
on prend une des possibilités de la retenue
on réactualise les possibilités dans les autres cases
et on refait un "isFinished"
...on boucle sur le nombre de possibilités que contient la case choisie
On pourrait aussi boucler sur le nombre de cases nom remplies encore (dans le cas où avec la case choisie on résoud pas la grille)
Ensuite, si ça suffit pas, ben c'est que la grille est vraiment compliquée! Le plus simple c'est d'abandonner! Sinon il faudrait imbriquer une seconde boucle de secours dans la première...mais j'ose même pas imaginer le foutoir! lol
Maintenant les grilles sont p-ê conçues pour être résolues sans qu'on ait besoin de faire un choix aléatoire dans une case?
@+! Samy
kingcobra
Messages postés316Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention19 septembre 2012 6 juin 2006 à 09:54
finalement c'est tout simple, il suffit de tester un isFinished() apres un solve().
Si true c'est terminé sinon c'est impossible.
kingcobra
Messages postés316Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention19 septembre 2012 5 juin 2006 à 13:33
je corrige ça au plus vite, ainsi solve renverra null si la grille n'est pas solvable.
kingcobra
Messages postés316Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention19 septembre 2012 5 juin 2006 à 13:28
En fait t'a pas tout a fait tort.
y'a un seul truc que je ne gère pas, je devrai le faire assez vite, c'était un oubli de ma part.
Si la grille de départ est fausse une fonction est faite pour ça.
(1)Si la grille de départ est correcte mais qu'elle n'est pas solvable alors ça ne fait rien (a cause de la récursivité).
Reste a faire une condition qui renvoie une erreur si il n'y pas eu de changement de grille dans la recursivite (une ligne).
Ensuite si il ne peut pas réduire, il test des solutions parmi celles possibles, si la grille est solvable alors on finira forcement sinon (1).
j'espere avoir éclaircit le pb ... A + et merci.
cs_goldenboy68
Messages postés1596Date d'inscriptionsamedi 3 janvier 2004StatutMembreDernière intervention 9 juin 20112 5 juin 2006 à 01:07
J'ai fait un logiciel de jeu pour un site et j'ai toujours gardé dans l'idée de faire un solveur...jamais eu le temps de m'y mettre ni l'utilité!
Mais vu le boulot que t'as fait, ben je m'y mettrais jamais! Classe super-bien commentée et complète en plus!
J'ai pas tout vérifié et mon seul doute c'est lorsque tu peux pas réduire...il réduit quand même, mais est-ce forcément la bonne solution? Si ça ne l'est pas, la solution ne sera jamais trouvée? J'ai pas vu de second algorithme de secours...peut-être pas assez bien regardé...
9/10 Super boulot!
@+! Samy
cs_johann1
Messages postés170Date d'inscriptionjeudi 21 octobre 2004StatutMembreDernière intervention 9 janvier 2008 30 mai 2006 à 17:33
Evidemment! C'est vraiment le TOP !
Bravo !
Buddies
Messages postés3Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention 7 juin 2008 30 mai 2006 à 16:26
salut,
exellent ! vraiment bien joué ! bien commenté... ça marche...vivement la suite !
a+
cs_Mafassure
Messages postés1058Date d'inscriptionjeudi 24 juillet 2003StatutModérateurDernière intervention14 février 2009 29 mai 2006 à 22:07
salut,
je suis pas fan de suduku (on a du me rappeler le principe pour que j'arrive a utiliser le swf)
désolé :b pas grave et hop dans la sourceOthèque :O)
22 mai 2013 à 00:10
- la grille est validée quand même
- il n'accepte pas d'autres solutions
exemple :
000057200804000030002030058700006001060079340001000005307400080000300000000705023
ma solution :
139857264854621937672934158723546891568179342491283675317462589245398716984715423
En fait je suis venu ici en cherchant un solveur pour des sudoku multi grilles : kamikaze, banzai, marathon, triathlon, etc.
voir sur http://kelpi.zabro.free.fr/Web/Sudoku/sdk5.htm
Est-il possible d'adapter ce code pour ces autres grilles de sudoku ?
J'ai quelques notions de vb et aucune en flash
6 juin 2006 à 14:17
Bref c'est nickel !
@+
6 juin 2006 à 13:41
Vais la relire tranquillement ce soir!
@+!
6 juin 2006 à 13:35
t'as lu le code ?
tout ce que tu décris est déjà fait et en mieux.
Le code résoud absolument toutes les grilles. (meme les vides)
Dans le cas ou une est impossible, c a d que les chiffres sont placés de manière à ne pas pouvoir finir la grille, alors il ne finira pas de la résoudre puisqu'il peut pas.
6 juin 2006 à 10:28
ensuite on fait une copie de la grille à l'état où ça bloque
on prend une des possibilités de la retenue
on réactualise les possibilités dans les autres cases
et on refait un "isFinished"
...on boucle sur le nombre de possibilités que contient la case choisie
On pourrait aussi boucler sur le nombre de cases nom remplies encore (dans le cas où avec la case choisie on résoud pas la grille)
Ensuite, si ça suffit pas, ben c'est que la grille est vraiment compliquée! Le plus simple c'est d'abandonner! Sinon il faudrait imbriquer une seconde boucle de secours dans la première...mais j'ose même pas imaginer le foutoir! lol
Maintenant les grilles sont p-ê conçues pour être résolues sans qu'on ait besoin de faire un choix aléatoire dans une case?
@+! Samy
6 juin 2006 à 09:54
Si true c'est terminé sinon c'est impossible.
5 juin 2006 à 13:33
5 juin 2006 à 13:28
y'a un seul truc que je ne gère pas, je devrai le faire assez vite, c'était un oubli de ma part.
Si la grille de départ est fausse une fonction est faite pour ça.
(1)Si la grille de départ est correcte mais qu'elle n'est pas solvable alors ça ne fait rien (a cause de la récursivité).
Reste a faire une condition qui renvoie une erreur si il n'y pas eu de changement de grille dans la recursivite (une ligne).
Ensuite si il ne peut pas réduire, il test des solutions parmi celles possibles, si la grille est solvable alors on finira forcement sinon (1).
j'espere avoir éclaircit le pb ... A + et merci.
5 juin 2006 à 01:07
Mais vu le boulot que t'as fait, ben je m'y mettrais jamais! Classe super-bien commentée et complète en plus!
J'ai pas tout vérifié et mon seul doute c'est lorsque tu peux pas réduire...il réduit quand même, mais est-ce forcément la bonne solution? Si ça ne l'est pas, la solution ne sera jamais trouvée? J'ai pas vu de second algorithme de secours...peut-être pas assez bien regardé...
9/10 Super boulot!
@+! Samy
30 mai 2006 à 17:33
Bravo !
30 mai 2006 à 16:26
exellent ! vraiment bien joué ! bien commenté... ça marche...vivement la suite !
a+
29 mai 2006 à 22:07
je suis pas fan de suduku (on a du me rappeler le principe pour que j'arrive a utiliser le swf)
désolé :b pas grave et hop dans la sourceOthèque :O)
a+