Exemple #1
0
def main():
    complete=False
    count=0
    itercount=0
    while complete==False and count<=10:
        Sudoku_validCheck.validChecker(Sudoku_board.board.tileList())
        if Sudoku_validCheck.validSetter(Sudoku_board.board.tileList())==True:
            count-=1
        for item in Sudoku_board.board.tileList():
            if Sudoku_eliminationTest.elimination(item) !=-1:
#                print Sudoku_eliminationTest.elimination(item)
#                count-=1  BUG?
                item.setValue(Sudoku_eliminationTest.elimination(item))
#                Sudoku_validCheck.validCheck(Sudoku_eliminationTest.getAllNeighbourTiles(item)) #To update the valid and invalid tiles after a change has been made.
                Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
                #If things are happening, continue this thread.
#        Sudoku_view.view()
#        print 
        if isComplete()==True:
            Sudoku_view.view()
            complete=True
            return True
#        if continues()==False:
 #           return
        count+=1
        itercount+=1
#    Sudoku_view.view()
#    print
    
    return "Couldn't find a solution in "+str(itercount)+" iterations."
Exemple #2
0
def attempt3():
    Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
    Sudoku_eliminationTest.elimination(Sudoku_board.board.tileList()[0])
        
    for item in Sudoku_board.board.tileList():
        col=Sudoku_board.board.columnList()[item.col()-1]
        row=Sudoku_board.board.rowList()[item.row()-1]
        square=Sudoku_board.board.squareList()[item.square()-1]
        for num in item.validValues():
            if not (col.valueExists(num) or row.valueExists(num) or square.valueExists(num)):
                item.setValue(num)
                Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
                Sudoku_eliminationTest.elimination(Sudoku_board.board.tileList()[item])
Exemple #3
0
def attempt():
    validNums=[1,2,3,4,5,6,7,8,9]
    Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
    Sudoku_eliminationTest.elimination(Sudoku_board.board.tileList()[0])
    for item in Sudoku_board.board.tileList():
        if item.value()==-1:
            print item.name()
            col=Sudoku_board.board.columnList()[item.col()-1]
            row=Sudoku_board.board.rowList()[item.row()-1]
            square=Sudoku_board.board.squareList()[item.square()-1]
            for num in validNums:
                if not (col.valueExists(num) or row.valueExists(num) or square.valueExists(num)): #But how to backtrack here...?
                    item.setValue(num)
                    Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
                    Sudoku_eliminationTest.elimination(item)
                else:
                    continue
            

    return "Done"
Exemple #4
0
def attempt2(iteration, validNumbers=[1,2,3,4,5,6,7,8,9], keyMax=9):
    Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
    Sudoku_eliminationTest.elimination(Sudoku_board.board.tileList()[0])
    
    keyMax
    key=0
    iteration=0
    
    while iteration<len(Sudoku_board.board.tileList()):
        col=Sudoku_board.board.columnList()[Sudoku_board.board.tileList()[iteration].col()-1]
        row=Sudoku_board.board.rowList()[Sudoku_board.board.tileList()[iteration].row()-1]
        square=Sudoku_board.board.squareList()[Sudoku_board.board.tileList()[iteration].square()-1]
        while key<keyMax:
            if key==keyMax:
                if not (col.valueExists(validNumbers[key-1]) or row.valueExists(validNumbers[key-1]) or square.valueExists(validNumbers[key-1])):
                    Sudoku_board.board.tileList()[iteration].setValue(validNumbers[key])
                    Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
                    Sudoku_eliminationTest.elimination(Sudoku_board.board.tileList()[iteration])
                    return attempt2(iteration+1)
                else:
                    return attempt2(iteration-1,validNumbers[1:0],keyMax=keyMax-1)
            else:
                if not (col.valueExists(validNumbers[key-1]) or row.valueExists(validNumbers[key-1]) or square.valueExists(validNumbers[key-1])):
                    Sudoku_board.board.tileList()[iteration].setValue(validNumbers[key])
                    Sudoku_validCheck.validCheck(Sudoku_board.board.tileList())
                    Sudoku_eliminationTest.elimination(Sudoku_board.board.tileList()[iteration])
                    return attempt2(iteration+1)
                key+=1
        iteration+=1