cs_Norpac
Messages postés12Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention21 janvier 2013
-
15 juin 2010 à 15:52
kbalist
Messages postés36Date d'inscriptionjeudi 28 janvier 2010StatutMembreDernière intervention 6 février 2011
-
6 août 2010 à 09:12
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
kbalist
Messages postés36Date d'inscriptionjeudi 28 janvier 2010StatutMembreDernière intervention 6 février 2011 6 août 2010 à 09:12
à DX90 :
merci pour tes remarques...
c'est vrai que je n'ai pas prévu que l'on vide la grille pendant la recherche ! la logique serait de faire ESC ou stop (prévu sur les recherches longues ou sur la "totale") avant de vider la grille. on peut aussi dans le programme de vidage de la grille commencer par mettre à TRUE le flag ESC_flag qui est testé avant d'essayer une autre méthode lors de la recherche.
pour la saisie des valeurs, je n'ai pas non plus testé la cohérence. cela serait faisable au moment ou il gère le nombre saisi (par exemple effacer la valeur si elle figure déjà dans la ligne-colonne-région).
ceci dit, ça m'étonnerais qu'il continue de chercher sans s'arrêter...il produira juste des cases vides sans aucun candidat possible.
si tu trouves une grille (même incorrecte dès le départ) pour laquelle le programme tourne indéfiniment, je suis intéressé !
DX90
Messages postés40Date d'inscriptiondimanche 24 janvier 2010StatutMembreDernière intervention14 septembre 20181 11 juil. 2010 à 19:13
C'est bon j'ai compris pour le système de résolution.
DX90
Messages postés40Date d'inscriptiondimanche 24 janvier 2010StatutMembreDernière intervention14 septembre 20181 11 juil. 2010 à 18:55
Bonjour,
Ton code est vraiment excellent, mais il reste notamment quelque oublie.
Quand tu vide la grille et que ca cherche, ben il continue en supprimant, certaines partie, tu devrai y ajouter la fonction: ButtonViderGrille.Enabled = False
Et ButtonViderGrille.Enabled = True quand la solution est trouvé.
Et il reste le gros bug, par contre je sait pas comment le corriger, si tu met 2 nombres sur la même ligne, même colonne, ou même carré, ben il ne trouve pas le solution, il continue mais ne finit jamais.
Après d'où l'utilité de faire exprès il n'y en a pas, mais bon, c'est juste une suggestion.
Et j'ai pas trop compris les résolutions pour voir comment c'est fait mais bon pas grave.
DX90
cs_Norpac
Messages postés12Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention21 janvier 2013 15 juin 2010 à 15:52
Bonjour,
Logiciel très soigné qui sort nettement des sentiers battus.
Pour une résolution rapide, en une fraction de seconde, voir le lien : http://cgi.cse.unsw.edu.au/~xche635/dlx_sodoku/. C'est écrit en C++, mais doit pouvoir se transcrire en VB.NET.
La méthode DLX (Dancing Links), en plus d'être rapide, permet de détecter des sudokus insolubles ou possédant plusieurs solutions.
En tout cas merci pour ce code qui m'a permis de passer quelques bons moments.
6 août 2010 à 09:12
merci pour tes remarques...
c'est vrai que je n'ai pas prévu que l'on vide la grille pendant la recherche ! la logique serait de faire ESC ou stop (prévu sur les recherches longues ou sur la "totale") avant de vider la grille. on peut aussi dans le programme de vidage de la grille commencer par mettre à TRUE le flag ESC_flag qui est testé avant d'essayer une autre méthode lors de la recherche.
pour la saisie des valeurs, je n'ai pas non plus testé la cohérence. cela serait faisable au moment ou il gère le nombre saisi (par exemple effacer la valeur si elle figure déjà dans la ligne-colonne-région).
ceci dit, ça m'étonnerais qu'il continue de chercher sans s'arrêter...il produira juste des cases vides sans aucun candidat possible.
si tu trouves une grille (même incorrecte dès le départ) pour laquelle le programme tourne indéfiniment, je suis intéressé !
11 juil. 2010 à 19:13
11 juil. 2010 à 18:55
Ton code est vraiment excellent, mais il reste notamment quelque oublie.
Quand tu vide la grille et que ca cherche, ben il continue en supprimant, certaines partie, tu devrai y ajouter la fonction: ButtonViderGrille.Enabled = False
Et ButtonViderGrille.Enabled = True quand la solution est trouvé.
Et il reste le gros bug, par contre je sait pas comment le corriger, si tu met 2 nombres sur la même ligne, même colonne, ou même carré, ben il ne trouve pas le solution, il continue mais ne finit jamais.
Après d'où l'utilité de faire exprès il n'y en a pas, mais bon, c'est juste une suggestion.
Et j'ai pas trop compris les résolutions pour voir comment c'est fait mais bon pas grave.
DX90
15 juin 2010 à 15:52
Logiciel très soigné qui sort nettement des sentiers battus.
Pour une résolution rapide, en une fraction de seconde, voir le lien : http://cgi.cse.unsw.edu.au/~xche635/dlx_sodoku/.
C'est écrit en C++, mais doit pouvoir se transcrire en VB.NET.
La méthode DLX (Dancing Links), en plus d'être rapide, permet de détecter des sudokus insolubles ou possédant plusieurs solutions.
En tout cas merci pour ce code qui m'a permis de passer quelques bons moments.
Norpac.