Résolution et créations de sudokus

Soyez le premier à donner votre avis sur cette source.

Vue 23 467 fois - Téléchargée 4 154 fois

Description

Voilà une p'tite classe qui peut résoudre et générer une grille de Sudoku avec plusieurs niveaux de difficulté.
Pour ceux qui ne connaissent pas ce jeu:
Le Sudoku se compose d'une grille 9x9 divisée en 9 carrés 3x3.
Le but du jeu est de remplir toute la grille de façon à ce que chacun des chiffre de 1 à 9 se retrouve une et une seule fois dans chaque ligne, dans chaque colonne et dans chacun des 9 carrés 3x3.
Selon le niveau de difficulté, un certain nombres de chiffres sont déjà donnés, et c'est au joueur de compléter le reste.

Ici le programme nécessite que l'on remplisse un fichier avec une suite de 81 chiffres, en mettant des 0 à la place des case vides à compléter.

Conclusion :


L'idée générale est la suivante:
J'utilise deux procédures de résolutions: "elimination" et "recherche de position unique".
L'"élimination" va parcourir toutes les cases non encore déterminées et pour chacune de ces cases, supprimer les valeurs qui ne peuvent plus y etre (tout simplement en supprimant les valeurs qui sont déjà présentes dans la ligne la colonne et le carré de la case considérée.)
La "recherche de position unique" va regarder s'il y a des chiffre qui n'ont plus qu'une seule possibilité de placement dans une ligne, une colonne ou un carré; et dans l'affirmative, elle y place cette valeur.

Le programme lance ces deux procédure tant qu'elle modifie le Sudoku et donc tant qu'elle avancent vers la solution.
Lorsque plus rien n'est modifié par ces procédure et que le Sudoku n'est pas encore résolu, on cherche la première case qui n'est pas encore déterminée, et on fait un test d'hypothèse sur celle-ci. et on tente de résoudre récursivement le nouveau problème (éventuellement impossible).

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

le_duche
Messages postés
159
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
26 février 2009
-
Ce que tu peux toujours faire, c'est ajouter des critères de création dans le test, mais comme ma construction est aléatoire, il est possible que l'algo mette alors beaucoup de temps pour créer une grille valide...
cs_Eagle4
Messages postés
10
Date d'inscription
jeudi 12 février 2004
Statut
Membre
Dernière intervention
5 avril 2006
-
oui mais là je dois bien avouer que ce niveau est trop élevé pour moi lol... nan sérieusement, c'était surtout pas pour te vexer, il est super bien foutu ton code ;) d'ailleur c'est parce que ton code est super bien fais que je te demandais à toi ^^
m'enfin bon je vais essayé de me débrouiller merci quand meme ;)
le_duche
Messages postés
159
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
26 février 2009
-
Ben fais le alors ^^
cs_Eagle4
Messages postés
10
Date d'inscription
jeudi 12 février 2004
Statut
Membre
Dernière intervention
5 avril 2006
-
arf c'est c** ca, j'arrive pas à trouver un bon générateur qui fais ca :(
le_duche
Messages postés
159
Date d'inscription
lundi 13 juin 2005
Statut
Membre
Dernière intervention
26 février 2009
-
Pas avec ma méthode aléatoire en tous cas...

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.