Soulfly_tribe90 Posted December 30, 2006 Share Posted December 30, 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 Link to comment Share on other sites More sharing options...
Sentinel Posted December 30, 2006 Share Posted December 30, 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... Link to comment Share on other sites More sharing options...
Soulfly_tribe90 Posted December 30, 2006 Author Share Posted December 30, 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. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.