Пример #1
0
def initialize_sudoku():

    csp = CSP()
    N = 4
    BLOCK = 2
    rule = "x != y"

    for i in range(N):
        for j in range(N):
            csp.add_variable("(%s, %s)" % (i, j), list(range(N)))

    for x1 in range(N):
        for y1 in range(N):
            for x2 in range(N):
                for y2 in range(N):
                    neighbors = False
                    if x1 == x2: neighbors = True
                    if y1 == y2: neighbors = True
                    if x1 // BLOCK == x2 // BLOCK and y1 // BLOCK == y2 // BLOCK:
                        neighbors = True
                    if neighbors:
                        csp.add_constraint("(%s, %s)" % (x1, y1),
                                           "(%s, %s)" % (x2, y2), rule)

    csp.export_to_json("sudoku.json")
    csp.all_solutions = False
    solution = csp.solve()
    board = [[0] * N for i in range(N)]
    print(len(board))
    for key, value in solution.items():
        print(key[1], key[4], value)
        board[int(key[1])][int(key[4])] = value[0]

    for i in range(N):
        print(board[i])
Пример #2
0
def initialzing_NQueen(N):

    csp = CSP()

    rule = "x[0] != y[0] and x[1] != y[1] and abs((x[0] - y[0]) / (x[1] - y[1])) != 1"

    for v in range(N):
        csp.add_variable(str(v), [[x, y] for x in range(N) for y in range(N)])

    for x in csp.variables:
        for y in csp.variables:
            if x != y:
                csp.add_constraint(x, y, rule)
    csp.solve()
    csp.save_solution()
    #	print(csp.solutions)
    return csp
Пример #3
0
            m = assignment['M']
            o = assignment['O']
            r = assignment['R']
            y = assignment['Y']

            #Checking if condition is satisfied
            send = s * 1000 + e * 100 + n * 10 + d
            more = m * 1000 + o * 100 + r * 10 + e
            money = m * 10000 + o * 1000 + n * 100 + e * 10 + y

            return send + more == money
        return True


if __name__ == "__main__":
    letters = ["S", "E", "N", "D", "M", "O", "R", "Y"]
    possible_digits = {}

    for letter in letters:
        possible_digits[letter] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    possible_digits["M"] = [1]  # so we don't get answers starting with a 0

    csp = CSP(letters, possible_digits)
    csp.add_constraint(SendMoreMoneyConstraint(letters))

    solution = csp.backtracking_search()
    if solution is None:
        print("No solution found!")
    else:
        for key, val in solution.items():
            print(str(key).ljust(10), str(val).ljust(30))