def solve_gui(self): self.update_model() find = find_empty(self.model) if not find: return True else: row, col = find for i in range(1, 10): if valid(self.model, i, (row, col)): self.model[row][col] = i self.cubes[row][col].set(i) self.cubes[row][col].draw_change(self.win, True) self.update_model() pygame.display.update() pygame.time.delay(100) if self.solve_gui(): return True self.model[row][col] = 0 self.cubes[row][col].set(0) self.update_model() self.cubes[row][col].draw_change(self.win, False) pygame.display.update() pygame.time.delay(100) return False
def place(self, val): row, col = self.selected if self.cubes[row][col].value == 0: self.cubes[row][col].set(val) self.update_model() if valid(self.model, val, (row, col)) and solve(self.model): return True else: self.cubes[row][col].set(0) self.cubes[row][col].set_temp(0) self.update_model() return False
def solve(self): find = find_empty(self.model) if not find: return True else: row, col = find for i in range(1, 10): if valid(self.model, i, (row, col)): self.model[row][col] = i if self.solve(): return True self.model[row][col] = 0 return False