diff --git a/Generator.py b/Generator.py new file mode 100644 index 0000000..eac1f00 --- /dev/null +++ b/Generator.py @@ -0,0 +1,33 @@ +import random +from SudokuSolver import SudokuSolver + +def generate_sudoku(): + puzzle = [[0] * 9 for _ in range(9)] + + SudokuSolver.solve(puzzle) + + remove_numbers(puzzle) + + return puzzle + +def remove_numbers(grid): + num_holes = random.randint(40, 55) + for _ in range(num_holes): + row = random.randint(0, 8) + col = random.randint(0, 8) + if grid[row][col] != 0: + grid[row][col] = 0 + +def display_grid(grid): + for i in range(9): + if i % 3 == 0 and i != 0: + print("- - - - - - - - - - -") + for j in range(9): + if j % 3 == 0 and j != 0: + print("|", end=" ") + if j == 8: + print(grid[i][j]) + else: + print(grid[i][j], end=" ") + +print(generate_sudoku()) \ No newline at end of file diff --git a/tests/test_Generator.py b/tests/test_Generator.py new file mode 100644 index 0000000..45aa168 --- /dev/null +++ b/tests/test_Generator.py @@ -0,0 +1,14 @@ +import sys +import pytest +sys.path.append('..') + +from SudokuSolver import SudokuSolver +from Generator import generate_sudoku + +@pytest.mark.parametrize("test_num", range(20)) +def test_generate_sudoku(test_num): + # Test if generate_sudoku generates a valid Sudoku puzzle. + puzzle = generate_sudoku() + assert SudokuSolver.solve(puzzle) + assert SudokuSolver.is_valid_solution(puzzle) +