def test_complete_solver(self): s = SudokuSolver() # 5 3 0 0 7 0 0 0 0 # 6 0 0 1 9 5 0 0 0 # 0 9 8 0 0 0 0 6 0 # 8 0 0 0 6 0 0 0 3 # 4 0 0 8 0 3 0 0 1 # 7 0 0 0 2 0 0 0 6 # 0 6 0 0 0 0 2 8 0 # 0 0 0 4 1 9 0 0 5 # 0 0 0 0 8 0 0 7 9 s.add_filled_number(8, 4, 8) s.add_filled_number(8, 7, 7) s.add_filled_number(8, 8, 9) s.add_filled_number(7, 3, 4) s.add_filled_number(7, 4, 1) s.add_filled_number(7, 5, 9) s.add_filled_number(7, 8, 5) s.add_filled_number(6, 1, 6) s.add_filled_number(6, 6, 2) s.add_filled_number(6, 7, 8) s.add_filled_number(5, 0, 7) s.add_filled_number(5, 4, 2) s.add_filled_number(5, 8, 6) s.add_filled_number(4, 0, 4) s.add_filled_number(4, 3, 8) s.add_filled_number(4, 5, 3) s.add_filled_number(4, 8, 1) s.add_filled_number(3, 0, 8) s.add_filled_number(3, 4, 6) s.add_filled_number(3, 8, 3) s.add_filled_number(2, 1, 9) s.add_filled_number(2, 2, 8) s.add_filled_number(2, 7, 6) s.add_filled_number(1, 0, 6) s.add_filled_number(1, 3, 1) s.add_filled_number(1, 4, 9) s.add_filled_number(1, 5, 5) s.add_filled_number(0, 0, 5) s.add_filled_number(0, 1, 3) s.add_filled_number(0, 4, 7) grid = s.solve() if len(grid) == 0: print("not solvable") else: print(grid) solution = [[5, 3, 4, 6, 7, 8, 9, 1, 2], [6, 7, 2, 1, 9, 5, 3, 4, 8], [1, 9, 8, 3, 4, 2, 5, 6, 7], [8, 5, 9, 7, 6, 1, 4, 2, 3], [4, 2, 6, 8, 5, 3, 7, 9, 1], [7, 1, 3, 9, 2, 4, 8, 5, 6], [9, 6, 1, 5, 3, 7, 2, 8, 4], [2, 8, 7, 4, 1, 9, 6, 3, 5], [3, 4, 5, 2, 8, 6, 1, 7, 9]] self.assertEqual(grid, solution)
def add_grid_to_solver(s: solver.SudokuSolver, grid): for r in enumerate(grid): for c in enumerate(r[1]): if c[1]: s.add_filled_number(r[0], c[0], c[1])