Aller au contenu

[Resolu][Maple] resolve sudoku


Soulfly_tribe90

Messages recommandés

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 :iloveyou:

Lien vers le commentaire
Partager sur d’autres sites

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 :roll: 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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...