Example #1
0
def solveHard(grid):
    solveEasy(grid)
    if isSolved(grid) or impossiblePuzzle(grid):
        return grid
    for row in range(len(grid)):
        for column in range(len(grid)):
            if len(grid[row][column]) != 1:
                for number in grid[row][column]:
                    copyGrid = deepcopy(grid)
                    copyGrid[row][column] = [number]
                    copyGrid = solveHard(copyGrid)
                    if isSolved(copyGrid):
                        return copyGrid
    return grid
Example #2
0
def solveHard(grid):
    solveEasy(grid)
    if isSolved(grid) or impossiblePuzzle(grid):
        return grid
    for row in range(len(grid)):
        for column in range(len(grid)):
            if len(grid[row][column]) != 1:
                for number in grid[row][column]:
                    copyGrid = deepcopy(grid)
                    copyGrid[row][column] = [number]
                    copyGrid = solveHard(copyGrid)
                    if isSolved(copyGrid):
                        return copyGrid
    return grid
Example #3
0
def solve(puzzleStr):
    puzzle = SudokuPuzzle(puzzleStr)
    puzzle.grid = solveHard(puzzle.grid)
    puzzle.isSolved = isSolved(puzzle.grid)
    return puzzle
Example #4
0
def solve(puzzleStr):
    puzzle = SudokuPuzzle(puzzleStr)
    puzzle.grid = solveHard(puzzle.grid)
    puzzle.isSolved = isSolved(puzzle.grid)
    return puzzle