mirror of
https://github.com/Sosokker/sudoku-terminal-game.git
synced 2025-12-18 13:14:05 +01:00
Add puzzle generator and test
This commit is contained in:
parent
7d73c84bb6
commit
7e2b23ae72
33
Generator.py
Normal file
33
Generator.py
Normal 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
14
tests/test_Generator.py
Normal 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)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user