def _compute_solution(self): if self._computed_solution: return self._computed_solution solver = SudokuBoardSolver() solver.load_game(self.board.current_state(givens_only=True)) self.log("Computing solution...") last_status_clock = time.clock() # try: # for msg in solver.solve_iter(): # if time.clock() - last_status_clock > 1: # last_status_clock = time.clock() # self.log(msg, replace=True) # self.draw_board() # except UnsolvableError: # pass if not solver.is_solved(): self.log("Bruteforcing...") for msg in solver.bruteforce_iter(): if time.clock() - last_status_clock > 1: last_status_clock = time.clock() self.log(msg, replace=True) self.draw_board() if not solver.is_solved(): self.log("Unsolvable puzzle!") return None if not self._computed_solution: self._computed_solution = solver.current_state( include_possibles=False) self._log_check_solution() return self._computed_solution
def bruteforce(puzzle, x_regions, meta_regions, verbose): board = SudokuBoardSolver(x_regions, meta_regions) if puzzle: board.load_game(str(puzzle)) # try: # console_solve(board, verbose=verbose) # except UnsolvableError: # print "Unsolvable by intuition. Bruteforcing..." last_status_clock = time.clock() for msg in board.bruteforce_iter(): if verbose or time.clock() - last_status_clock > 1: last_status_clock = time.clock() print msg if board.is_solved(): print "Solved! " + board.current_state(include_possibles=False) else: print "Could not solve " + board.current_state()
def _compute_solution(self): if self._computed_solution: return self._computed_solution solver = SudokuBoardSolver() solver.load_game(self.board.current_state(givens_only=True)) self.log("Computing solution...") last_status_clock = time.clock() for msg in solver.solve_iter(): if time.clock() - last_status_clock > 1: last_status_clock = time.clock() self.log(msg, replace=True) self.draw_board() if not solver.is_solved(): self.log("Unsolvable puzzle!") return None self._computed_solution = solver.current_state( include_possibles=False) return self._computed_solution