Soulfly_tribe90 Posté(e) le 30 décembre 2006 Partager Posté(e) le 30 décembre 2006 Je suis en train de faire un resolveur de sudoku par la méthode bactracking et j'ai trouvé un code en maple (je connais pas le maple mais j'ai compris assez facilement), le truc c'est que je comprend pas tout sur ce code... Il y a un "do" qui se balade au milieu, d'habitude c'est lié a un while ou for mais pas la... et aussi je sais pas trop quand les if else se termine... Parce que je voulais le réécrire en langage C... Voila le code : solution:=proc(T::array) local index,valeur,fixes; index:=0: valeur:=0: fixes:=index_fixes(T): while index<81 do index:=suivant(T,index): valeur:=valeur+1: if OK(T,valeur,index) then T[index]:=valeur: valeur:=0: else if valeur=9 then valeur:=0: do T[index]:=0: index:=index-1: while member(index,fixes) do index:=index-1 end do: if index<0 then error "Pas de solution trouvée pour ce sudoku." end if; if T[index]<9 then valeur:=T[index]: T[index]:=0: break end if: end do end if end if: end do: eval(T) end proc: Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 30 décembre 2006 Partager Posté(e) le 30 décembre 2006 Hummm, il ne manquerait pas le code de la fonction "OK" dans ton post ? Ca me paraît bien mince pour résoudre le Sudoku... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Soulfly_tribe90 Posté(e) le 30 décembre 2006 Auteur Partager Posté(e) le 30 décembre 2006 Hummm, il ne manquerait pas le code de la fonction "OK" dans ton post ? Ca me paraît bien mince pour résoudre le Sudoku... Ouai je sais bien les autres fonctions je les ai codé et elle fonctionne. Il y a juste cette fonction resolve que je ne comprend pas à cause justement de ce do et de faire la parallele avec le C pour la fin des if etc... La fonction OK par exemple test si la valeur est ou pas dans une ligne colonne et carré, ca renvoie un booleen. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.