diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ba0430d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__/ \ No newline at end of file diff --git a/SudokuSolver.py b/SudokuSolver.py index 361d5f8..b456d2b 100644 --- a/SudokuSolver.py +++ b/SudokuSolver.py @@ -41,4 +41,15 @@ class SudokuSolver: if grid[box_row + i][box_col + j] == num: return False + return True + + @staticmethod + def is_valid_solution(grid): + # Check if each row, column, and 3x3 box contains all numbers from 1 to 9 + for i in range(9): + row_nums = set(grid[i]) + col_nums = set(grid[j][i] for j in range(9)) + box_nums = set(grid[i//3*3+j//3][i%3*3+j%3] for j in range(9)) + if row_nums != set(range(1, 10)) or col_nums != set(range(1, 10)) or box_nums != set(range(1, 10)): + return False return True \ No newline at end of file diff --git a/tests/test_SudokuSolver.py b/tests/test_SudokuSolver.py index e797b47..606fc01 100644 --- a/tests/test_SudokuSolver.py +++ b/tests/test_SudokuSolver.py @@ -17,7 +17,7 @@ def test_solve_sudoku(): [0, 0, 0, 0, 8, 0, 0, 7, 9] ] assert SudokuSolver.solve(grid) - assert is_valid_solution(grid) + assert SudokuSolver.is_valid_solution(grid) # Test an invalid Sudoku grid grid = [ @@ -33,13 +33,3 @@ def test_solve_sudoku(): ] assert not SudokuSolver.solve(grid) -def is_valid_solution(grid): - # Check if each row, column, and 3x3 box contains all numbers from 1 to 9 - for i in range(9): - row_nums = set(grid[i]) - col_nums = set(grid[j][i] for j in range(9)) - box_nums = set(grid[i//3*3+j//3][i%3*3+j%3] for j in range(9)) - if row_nums != set(range(1, 10)) or col_nums != set(range(1, 10)) or box_nums != set(range(1, 10)): - return False - return True -