Résolveur de sudoku

Soyez le premier à donner votre avis sur cette source.

Vue 18 825 fois - Téléchargée 2 159 fois

Description

Ce code permet de résoudre un Sudoku, (si vous ne savez pas ce que c'est, tapez "Sudoku" sur google, vous trouverez facilement...).

La fenêtre présente 9*9 textbox représentant la grille sudoku, puis vous suivez la démarche suivante :

1) Vous entrez les chiffres connus
2) Cliquez sur "Résoudre sans supposition"

-Trois cas de figure :
a) Il ne trouve rien -> jmp 3)
b) Il ne trouve pas tout (ça ne sert à rien de cliquer plusieurs fois) -> jmp 3)
c) Il trouve tout -> jmp 6)

3) Cliquez sur "Résoudre avec une supposition"

-Trois cas de figure :
a) Il trouve rien -> jmp 4)
b) Il un chiffre (celui qui permet de trouver le plus de nouvelles solutions en une fois) -> jmp 2)

4) La grille a trop peu d'informations, il vous faut ajouter manuellement un nombre, attention que ce genre de grille comporte alors plusieurs solutions et ne répond donc pas à une règle de base des sudokus qui est de n'en avoir qu'une. Néanmoins, beaucoup de grille 'difficiles' sur internet en comportent plusieurs...

5) jmp 2)

6) C'est gagné !

Vous remarquerez que les chiffres entré manuellements sont noirs, tandis que ceux trouvés par le programme sont rouges. Cela signifie qu'ils ont le statut de proposition. Vous pouvez les refuser ou les accepter avec les 2 boutons prévus à cet effet. Il est conseillé de s'en servir vu que les propositions avancée par le point 3 sont les plus fructueuses, mais pas spécialement les bonnes, elles peuvent vous mener dans une impasse. Dans ce cas, à vous de refusez les propositions et de faire un supposition manuelle (oui désolé, c'est pas encore parfait...)

Vous vous demandez peut-être pourquoi j'ai pas fais un deuxième niveau de supposition ? Ben tout simplement parce que j'ai essayé et que j'ai mis 1h30 (ben oui, il faut multiplier le temps par 81 à chaque fois...) pour trouver la grille en entier alors que j'avais mis 14 secondes pour la trouver en faisant une supposition manuelle...

Source / Exemple :


'Tout dans le zip

Conclusion :


Je suis désolé, je code mal, je fais pas de commentaires et les noms de mes variables ne sont pas des plus judicieux. C'est la première (peut-être deuxième mais la première était pas sérieuse) fois que je met un code en ligne et je n'ai jamais pensé que d'autre aurait à lire mon code en programmant. Si ce programme suscite de l'intérêt, je restructurerai un petit peu tout ça avec plaisir, mais comme c'est vraiment pas le côté que j'aime en prog et que je suis flemard...
Au passage, quelqu'un sait comment je peux avoir les évènements de mes textbox ? Parce que si je mets WithEvents, je peux pas faire un tableau et moi il m'en faut un.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
27 février 2006

<quote>Vous vous demandez peut-être pourquoi j'ai pas fais un deuxième niveau de supposition ? Ben tout simplement parce que j'ai essayé et que j'ai mis 1h30 (ben oui, il faut multiplier le temps par 81 à chaque fois...) pour trouver la grille en entier alors que j'avais mis 14 secondes pour la trouver en faisant une supposition manuelle... </quote>

Cher julien,
Je doutes pas que ton programme a surrement des interets dans moultes domaine, mais en tout cas essaye de le perfectionner du point de vue algorithmique au lieu de te contenter d'une solution de bourrinage ultime ;)
Un bon algorithme de resolution de sudoku est instantané quelquesoit la grille.
Quelques indices : pour chaque case, calculer les coups possible et ceux interdits. Quand il n'y a qu'un seul coup possible, valider la case. De même quand dans un groupement (ligne, colone, carré de 3x3) il n'y a qu'une seule case contenant un chiffre particulier de possible (meme si d'autres chiffres sont possibles pour cette case), valider le chiffre en question.
Enfin utiliser un algo recursif ou de backtracking pour trouver la solution si les methodes precedentes ne suffisent pas, tout en continuant d'appliquer les deux regles de base pour chaques itérations (elles suffisent pour bien des grilles faciles, mais pour certaines difficiles un parcours des possibilités restantes est obligatoire).
Messages postés
121
Date d'inscription
vendredi 27 octobre 2000
Statut
Membre
Dernière intervention
29 novembre 2006

Pas Mal* je voulai dire :/
Messages postés
121
Date d'inscription
vendredi 27 octobre 2000
Statut
Membre
Dernière intervention
29 novembre 2006

Pas ce resolver de sudoku ;)
Si tu ve avoir des evenement avec un tableau de TextBox il faut utiliser AddHandlers:
AddHandlers TaTextBox.Evenement, AddressOf SubAAppelerPourLEvenement
Dans l'evenement du recupere la TextBox conserné avec le parametre sender

Voila, bonne continuation ;)
Messages postés
101
Date d'inscription
samedi 16 mars 2002
Statut
Membre
Dernière intervention
19 mai 2011
1
C'est quandmem du .net , j'ai arriver a copier-coller des partis de tes fichiers dans un project neuf en vb.net 2003
Maintenant il me reste que etudier hihihi
A+
Guy van der velden
Messages postés
101
Date d'inscription
samedi 16 mars 2002
Statut
Membre
Dernière intervention
19 mai 2011
1
Cher Julien, je crois qu'il manque .vbp quand c'est ecris en vb6
Je veux quandmeme essayer ton programme, mais je ne peut pas le charger
D'habitude je travaille avec vb.net 2003, et je vai profiter de l'offre vb.net 2005 express
Mais comme je crois que c'est du vb6 merci de mettre sur vbfrance le *.vbp
La solution de Renfield ne fonctionne pas chez moi
A+
Guy van der Velden
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.