Ce nest 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 sil 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 quil fasse une tentative avec le chiffre
suivant.
La valeur de init passée en paramètre na pas dintérêt
(pour preuve cette valeur est de faite une constante) car ce nest pas lappelant
qui décide de la valeur à mettre dans la case, mais lappelé !
Tu devrais aussi donner des noms de variables moins sibyllins,
k pourrait sappeler 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 nayant quune case libre et donc quune seule valeur
possible, le but étant de limiter au maximum la taille de larbre 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.