Add puzzle generator and test

This commit is contained in:
Sirin Puenggun 2023-07-07 23:13:53 +07:00
parent 7d73c84bb6
commit 7e2b23ae72
2 changed files with 47 additions and 0 deletions

33
Generator.py Normal file
View File

@ -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())

14
tests/test_Generator.py Normal file
View File

@ -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)