Posté(e) le 30 décembre 200618 a 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 Modifié le 3 janvier 200718 a par Soulfly_tribe90
Posté(e) le 30 décembre 200618 a 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...
Posté(e) le 30 décembre 200618 a Auteur 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.
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.