diff --git a/gameplay/Sudoku_Generator.py b/gameplay/Sudoku_Generator.py index 2fbd94a..0a979fc 100644 --- a/gameplay/Sudoku_Generator.py +++ b/gameplay/Sudoku_Generator.py @@ -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) diff --git a/gameplay/Sudoku_Solver.py b/gameplay/Sudoku_Solver.py index 88e6362..6bb4eec 100644 --- a/gameplay/Sudoku_Solver.py +++ b/gameplay/Sudoku_Solver.py @@ -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] diff --git a/gameplay/sudoku_gameplay.py b/gameplay/sudoku_gameplay.py index aa026a7..90f07a4 100644 --- a/gameplay/sudoku_gameplay.py +++ b/gameplay/sudoku_gameplay.py @@ -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