Probleme boucle for
# Boucles
# Algorithmes
# Scripting
Salut, j'essaie de faire un script pour résoudre un sudoku et j'ai un probleme,
Je comprend pas pourquoi ma boucle for tourne plusieurs fois
Mon script:
class Sudoku:
def __init__(self, tab=[[0] * 9] * 9):
self.size = 9
self.tab = [n if n else [] for n in tab]
self.cases_to_find = []
# On remplit self.cases_to_find avec les coordonées des cases vides
for y in range(self.size):
for x in range(self.size):
if not self.tab[y][x]:
self.cases_to_find.append((x, y))
self.possible = [] # liste qu'on vas remplir avec les valeurs possibles
self.found = 0
def solve(self):
self.solve_1()
self.solve_2()
def solve_1(self):
liste_found = []
possible = []
found = self.found
# CETTE BOUCLE EN DESSOUS
for i, (x, y) in enumerate(self.cases_to_find):
case = []
for j in range(1, self.size+1):
if j not in self._line(y) + self._column(x) + self._case(x, y):
case.append(j)
if len(case) == 0:
raise SudokuError("Invalid grid")
elif len(case) == 1:
logging.debug(f"case trouvee : {(x, y)} : {case[0]}")
self.tab[y][x] = case[0]
liste_found.append(i)
found += 1
else:
possible.append(tuple(case))
for i in liste_found:
del self.cases_to_find[i]
if found != self.found:
self.possible = possible
self.solve_1()
def solve_2(self):
pass
# apres il y a les methodes _line, _column et _case qui renvoient des listes correspondantes en enlevant les 0 ( qui correspondent aux cases vides )
J'ai vérifié avec le debuger, quand elle a finis d'iterer ça recommence avec i = 0, je comprend pas DU TOUT ou est le soucis
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte