Exemple #1
0
def var_selector_no_ac3(sudoku):
    for i in range(len(sudoku)):
        for j in range(len(sudoku[i])):
            if sudoku[i][j] == 0:
                domainSetMat = calculateDomainSetMat(sudoku)
                domain = lcv_values(sudoku, i, j, domainSetMat)
                return i, j, domain
Exemple #2
0
def mrv_domains(sudoku, allMinDomainVars, returnDomainSetMat, domainMat=None):
    if domainMat is None:
        domainSetMat = calculateDomainSetMat(sudoku)
    else:
        domainSetMat = domainMat
    minDomainsVariablesArray = minDomainArray(domainSetMat)

    if len(minDomainsVariablesArray) == 0:
        if returnDomainSetMat is True:
            return None, None
        else:
            return None

    if allMinDomainVars is True:  # return all the variables that have minimum domain length
        min_domains = {
            var: domainSetMat[var[0]][var[1]]
            for var in minDomainsVariablesArray
        }

    else:  # return just one variable that have minimum domain length
        var = minDomainsVariablesArray[0]
        min_domains = {var: domainSetMat[var[0]][var[1]]}

    if returnDomainSetMat is True:
        return min_domains, domainSetMat
    else:
        return min_domains
Exemple #3
0
def search(sudoku, useAc3=False):
    if useAc3 is False:
        return backtracking_search(sudoku, var_selector_no_ac3)
    else:
        variables = set()
        for i in range(len(sudoku)):
            for j in range(len(sudoku[i])):
                if sudoku[i][j] == 0:
                    variables.add((i, j))
        domainSetMat = calculateDomainSetMat(sudoku)
        check = ac3(sudoku, variables, domainSetMat)
        if check is False:
            return None
        return backtracking_search_memory(sudoku, var_selector_ac3, domainSetMat, variables)
Exemple #4
0
def var_selector_no_ac3(sudoku):
    var = maxDegreeVar(sudoku)
    domainSetMat = calculateDomainSetMat(sudoku)
    orderedDomain = lcv_values(sudoku, var[0], var[1], domainSetMat)
    return var[0], var[1], orderedDomain
Exemple #5
0
def search(sudoku):
    domainSetMat = calculateDomainSetMat(sudoku)