Y a t-il quelqu'un d'intéressé par le SODOKU ?

cs_imad_lol Messages postés 90 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 mai 2008 - 30 déc. 2005 à 20:24
cs_imad_lol Messages postés 90 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 mai 2008 - 31 déc. 2005 à 22:56
s il y a quelqu'un interessé par le jeu sudoku je peu reposer ma fonction que je pense qu elle est pas loin de la solution

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 déc. 2005 à 20:41
Il y a déja sur le site plusieurs codes de réolution de sudoku qui marchent très bien
0
cs_imad_lol Messages postés 90 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 mai 2008
30 déc. 2005 à 21:07
stp je suis nouveau ici.
peut tu m'aider comment les avoir??
merci d'avance
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
30 déc. 2005 à 21:09
dans le moteur de recherche, tu tapes sudoku
0
cs_imad_lol Messages postés 90 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 mai 2008
30 déc. 2005 à 21:11
oui je lé deja fait mais ces codes marche pas ou je trouve parfois des solutions compliké
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
31 déc. 2005 à 00:18
Y'a pas de solution compliquées, pour une VRAIE grille de sudoku donnée (généralement 81 cases), il n'y qu'UNE SEULE solution possible.
Donc je vois pas où est le bogue.... de quels programmes parles-tu ?

Urgo
0
cs_imad_lol Messages postés 90 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 mai 2008
31 déc. 2005 à 00:54
je veu dire que les codes que je trouve dans le site j arrive pas a les comprendre..peut etre que cé de ma faute mais pour mon niveau peut etre que cé un peu avancé..bon voila ma fonction recursive mais elle est encore au debut..et je demande si quelqu'un peu m'aider a trouver un code plus simple parceque je doi rendre ce projet ce mardi

int parcours(int i, int j,int init)
{ int k,sortir,a,pl,pc,w,x;



for(k=init;(k<=9);k++)
{
sortir=0;
if(grille[i][j]==0)
while (!sortir)
{for(a=0;a<9 && !sortir;a++)
if(grille[i][a]==k)
sortir=1;


if(!sortir)
for(a=0;a<9 && !sortir;a++)
if(grille[a][j]==k)
sortir=1;


if(!sortir)
{
pl=(i/3)*3;
pc=(j/3)*3;
for(w=pl;w<=pl+2 && !sortir;w++)
for(x=pc;x<=pc+2 && !sortir;x++)
if(grille[w][x]==k)
sortir=1;
}
if(!sortir)
{grille[i][j]=k;
sortir=1;
if (j<9)
parcours(i,j+1,1);
else
if (i<9)
parcours (i+1,0,1);
}


else
{
if (j<9)
parcours(i,j+1,1);
else
if (i<9)
parcours (i+1,0,1);
}
}
}
return 0;
}
0
cs_Klephte Messages postés 22 Date d'inscription mardi 20 mai 2003 Statut Membre Dernière intervention 4 janvier 2022
31 déc. 2005 à 16:42
Ce n’est pas évident de réfléchir à l'algorithme que tu veux
mettre en place en partant de la réponse, mais le problème étant connu je me
lance dans une ébauche de réponse.



Voici ce que j'ai compris de ton algo :

tu parcours le tableau à la recherche de zéro, lorsque tu en trouves en un, tu
testes successivement tous les chiffres entre 1 et 9 en vérifiant à chaque
tentative s’il n'est pas présent dans la ligne, la colonne ou la région sur
laquelle tu travailles, si c'est bon ou mauvais (d'ou l'erreur) tu passes à la
colonne ou la ligne suivante.

la correction que je te propose:

Modifier ton code pour que si sortir==1 alors retourner à l'appelant que le
chiffre proposé n'est pas le bon pour qu’il fasse une tentative avec le chiffre
suivant.



La valeur de init passée en paramètre n’a pas d’intérêt
(pour preuve cette valeur est de faite une constante) car ce n’est pas l’appelant
qui décide de la valeur à mettre dans la case, mais l’appelé !

<!--[if !supportLineBreakNewLine]-->

<!--[endif]-->



Tu devrais aussi donner des noms de variables moins sibyllins,
k pourrait s’appeler iChiffreTeste (iTestedValue), a : iTemp, sortir :bSortir





Malgré cela ton algorithme ne fonctionnera pas, car tu ne
traites pas un retour d'une mauvaise proposition (qui devrait entrainer un
autre choix) ou un acquittement du choix (cas qui se présentera lorsque tout le
tableau sera remplit).



Ton algorithme devrait être amélioré par un choix judicieux
de la case à tester, je te conseille d’écrire une fonction trouvant la cellule
ayant le plus de contraintes c'est-à-dire la plus de chiffres sur sa ligne, sa
colonne ou sa région, car la contrainte maximale correspond à une ligne ou
colonne ou une région n’ayant qu’une case libre et donc qu’une seule valeur
possible, le but étant de limiter au maximum la taille de l’arbre que ton
algorithme récursif parcourra et de provoquer dès le démarrage une convergence
vers le résultat.



Je crois que cette discution risque de nous tenir en haleine jusque Mardi



Arnaud Grandville
-------------------------------
Maintenant, grâce à Microsoft et à la simplification de ses systèmes via les assistants, tout le monde est capable de créer des systèmes dangereux.
0
cs_imad_lol Messages postés 90 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 23 mai 2008
31 déc. 2005 à 22:56
merci. je suis d accord avec toi pour les noms des variables.mais pour ma fonction je pense que je suis deja sur le bon chemin..ce soir chui entrain de l'ameliorer et je te repondrai avant mardi pour dire ou ca a terminer..et peut etre je vais poser la solution de mon prof ..
a tt
0
Rejoignez-nous