def solve_pair(self, puzzle, solution): puzzle_str = gen3.array_to_str(puzzle) solver = SudokuSolver(puzzle_str, grid_class=StringGrid) solver.run() computed_solution = str(solver.grid.layer) solution_str = gen3.array_to_str(solution) self.assertEqual(computed_solution, solution_str)
def get_solved_sudoku(self): ''' SudokuSolver takes the sudoku as string Example : [[1, 0, 3], [0, 2, 1]] = "102021 or 1.2.21" ''' solver = SudokuSolver(''.join([ str(cell_value) for row in self.row_wise_sudoku for cell_value in row ]), grid_class=StringGrid) solver.run() self.solved_string = str(solver) ansi_escape = re.compile( r''' \x1B # ESC [@-_] # 7-bit C1 Fe [0-?]* # Parameter bytes [ -/]* # Intermediate bytes [@-~] # Final byte ''', re.VERBOSE) result = ansi_escape.sub('', self.solved_string) print(result) self.row_wise_solved_sudoku = list() self.row_elements = [] for value in result: try: cell_value = int(value) self.row_elements.append(cell_value) if len(self.row_elements) == 9: self.row_wise_solved_sudoku.append(self.row_elements) self.row_elements = [] except: continue print(self.row_wise_solved_sudoku) return self.row_wise_solved_sudoku