Résolue

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

Bonjour Christian,


désolé mais j'ai un peu de mal à comprendre le script je crois qu'il y a eu un problème avec les indentations. Tu peux essayer de reproduire les indentations comme elles le sont chez toi ? C'est important pour quo'n puisse comprendre ton intention de code. Merci.

J'ai corrigé les indentations mais quand je valide ça reviens comme c'était

Hello Christian,


désolé je voulais dire pour que je puisse t'aider, j'aimerais voir la bonne indentation dans ta copie dans la question.

Ouais je sais mais j'arrive pas a mettre l'indentation correctement, tant pis j'ai réécrit mon script du début un peu autrement du coup :)

Et du coup cela fonctionne maintenant ?

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.