mirror of
https://github.com/Sosokker/sudoku-terminal-game.git
synced 2025-12-19 13:44: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