Sudoku en langage c

Soyez le premier à donner votre avis sur cette source.

Vue 10 725 fois - Téléchargée 2 902 fois

Description

une version du jeu Sudoku en langage C qui inclue les mécanismes suivants :

- générateur des grilles sudoku
- jeu et validation de chaque valeur selon la ligne et la colonne choisi

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

ccgousset
Messages postés
147
Date d'inscription
samedi 1 août 2009
Statut
Membre
Dernière intervention
5 novembre 2019
-
Sudoku quand tu nous tiens . Question ou a tu trouvé ca =>
void Color(int texteColor)
{
HANDLE H=GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(H,texteColor);
}
as tu de la doc sur cette facon de proceder ?
cs_casseur
Messages postés
5
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
3 mai 2005
-
Deux commentaires sur le fond :

- Concernant la génération de la grille (sans les cases vides) : la seule source de hasard se trouve dans la génération de la première ligne. Ensuite, tout est déterministe. C'est un peu léger. Une manière simple d'ajouter une bonne dose d'aléa est de réaliser un grand nombre de permutation aléatoires de lignes et de colonnes bien choisies (les permutations concernent les lignes 1 à 3 ensemble, 4 à 6 ensemble, et 7 à 9 ensemble... idem pour les colonnes). On se rend aisément compte qu'une grille valide le reste après une permutation de ce type et donc après un nombre quelconque de permutations.

- Concernant la génération de la grille finale (l'effacement de certaines valeurs au moyen de EffacerQlqValeurCarreau), cela me parait encore plus léger. Vous vous contentez d'effacer de manière aléatoire un certain nombre de valeurs dans chaque carreau (3 en moyenne). Cela ne peut pas suffire. Il faut vérifier après l'effacement que la grille possède toujours une unique solution. En effet, si l'on efface trop de valeurs, il se peut que le problème devienne sous-déterminé et possède alors plusieurs solutions (ce qui n'a aucun intérêt du point de vue du jeu).

- En conclusion, construire des grilles de Sudoku requiert de générer des grilles qui possèdent UNE et UNE SEULE solution.
L'existence de la solution est assurée par la première partie du code (Generate via SetValue) : il y a ici moyen d'améliorer les choses en introduisant plus de hasard.
L'unicité de la solution doit être conservée lors de la procédure d'effacement des valeurs. Il y a ici une grosse lacune dans votre code. Idéalement la procédure d'effacement vérifie au fur et à mesure que la solution reste unique. Par ailleurs, il est intéressant de permettre à l'utilisateur de fixer le niveau de difficulté qui sera géré par la procédure d'effacement en ajustant le nombre de valeurs effacées.

- Voilà pour les commentaires techniques. Cela étant, c'est un problème très intéressant. Je m'y étais attelé il y a de cela quelques années et avais pondu un petit exécutable que vous trouverez à l'adresse suivante :
http://www.broufart.com/_FR_/Soft_Sudoku.html
Je peux vous fournir les sources mais elles sont bien moins propres que les vôtres et de mon avis absolument illisibles.

Bonne continuation...
cs_casseur
Messages postés
5
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
3 mai 2005
-
Merci pour ces commentaires,

je tiens a vous informer que j ai fait ce code sur demande de plusieurs personnes (débutant),
j ai pas beaucoup investie sur la logique (j ai fait ce code en deux heures).
j ai voulais juste donner une aider simple pour faire le jeux Sudoku.

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.