salut a ts
voila j'ai un immense probleme j'ai a faire pr demain un programme qui prend un fichier texte et qui resoud et affiche un sudoku 3X3 utilisant le backtracking S'il vous plait aider moi. J'ai reussi a prendre le fichier et a calculer les candidats possible est ce quelqu'un peut m'aider pour la fonction backtracking ca fai des jrs que je suis dessus.
Voici ma fonctions qui calcul les candidats possible:
def calculCandidats(l,e,i):
candidats=[]
res=[]
if l[e][i]==0:
for j in range(len(l)):
for k in range(len(l)):
for a in range(1,len(l)+1):
if l[e][j]!=0 and l[e][j]==a:
res.append(a)
break
if l[k][i]!=0 and l[k][i]==a:
res.append(a)
break
for j in range(len(l)):
for k in range(len(l)):
for a in range(1,len(l)+1):
ligne=e-(e%3)
colonne=i-(i%3)
for m in range(ligne,ligne+3):
for n in range(colonne,colonne+3):
if l[m][n]!=0 and l[m][n]==a:
res.append(a)
for a in range(1,len(l)+1):
if a not in res:
candidats.append(a)
return candidats
else:
return []
et celle la c'est la fontion que j'ai essayer de faire avec le backtracking
def resolution (l,i,candidats,n=9):
if i == n:
return True
elif candidats == []:
return False
else:
for e in candidats:
l.append(e)
i += 1
newCandidats = calculCandidats(l,e,i)
if resolution(l,i,newCandidats,n=9):
return True
else:
l.pop()
i -= 1
return False