def generateCSP(self, size, circuit_components): CSP.__init__(self, self.values, self.variables, self.constraints, self.init_domains, self.inference_bool) final_assignment = CSP.backtracking_search(self) return final_assignment
def generateCSP(self, word_values, word_variables): CSP.__init__(self, self.values, self.variables, self.constraints, self.init_domains, self.inference_bool) final_assignment = CSP.backtracking_search(self) print("final assignment", final_assignment) return final_assignment
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))