Fix cell status

master
En Yi 2018-07-12 18:48:45 +08:00
parent 48f81470b8
commit 9ca2b1a5f6
3 changed files with 13 additions and 12 deletions

View File

@ -1,8 +1,6 @@
"""
Module that generates a valid Sudoku Puzzle
Credits for Solver : http://norvig.com/sudoku.html
Credits for Generator: http://zhangroup.aporc.org/images/files/Paper_3485.pdf
"""
import random
import re
@ -13,11 +11,11 @@ if __name__ == "__main__":
else:
from . import Sudoku_Solver as solver
givenregex = re.compile('(?!0)')
given_regex = re.compile('(?!0)')
def check_for_givens(seq):
return len([m.start() for m in givenregex.finditer(seq)])-1
return len([m.start() for m in given_regex.finditer(seq)])-1
def generate_completed_grid(n):
@ -26,7 +24,6 @@ def generate_completed_grid(n):
values = solver.parse_grid('0' * 81)
valid_assignments = 0
while valid_assignments < n:
# display(values)
cell_to_assign = solver.squares[random.randint(0, 80)]
valid_values = values[cell_to_assign]
if len(valid_values):
@ -43,7 +40,6 @@ def generate_completed_grid(n):
def generate_dig_sequence(difficulty):
# TODO: Determine the number of givens and lower bound of given
if difficulty <= 1:
random_number = list(range(81))
while len(random_number) > 0:
@ -187,6 +183,7 @@ def generate_sudoku_grid(difficulty):
return grid
def generate_sudoku_puzzle(difficulty):
grid = generate_sudoku_grid(difficulty)
print('Givens: ', check_for_givens(grid))
@ -195,6 +192,7 @@ def generate_sudoku_puzzle(difficulty):
return sudoku_array
if __name__ == "__main__":
a = generate_sudoku_puzzle(3)
print(a)

View File

@ -1,3 +1,8 @@
# TODO: Rewrite this to use array instead?
"""
Module to solve any Sudoku Board
Credits for Solver : http://norvig.com/sudoku.html
"""
def cross(array1, array2):
"""Cross product of elements in A and elements in B."""
return [a+b for a in array1 for b in array2]

View File

@ -30,7 +30,7 @@ class SudokuSystem:
def clear_grid(self):
self.number_grid[:] = 0
self.cell_status = EMPTY
self.cell_status[:] = FIXED
for i in range(9):
for j in range(9):
while self.offending_cells[i][j]:
@ -121,11 +121,9 @@ class SudokuSystem:
self.cell_status[r, c] = EMPTY
def generate_random_board(self):
# TODO: Write function to generate a random board
self.clear_grid()
self.number_grid[:] = sdk_gen.generate_sudoku_puzzle(2)
self.cell_status = self.number_grid > 0 * FIXED
row, col = np.where(self.number_grid == 0)
def check_valid_moves(self):
# TODO: Write function to return a possible valid numbers for a cell
pass
for r, c in zip(row, col):
self.cell_status[r, c] = EMPTY