print("{} {}".format(assignments[key], key)) print("--------------------") print("Total: {0: .2f}".format( sum([ num * appetizer_prices[var] for var, num in assignments.items() ]))) except (TypeError, KeyError): print("No Solution!") constraints = [ exact_price_constraint(appetizer_prices, variable_names, TOTAL_PRICE) ] if __name__ == "__main__": problem = Problem() for variable in variable_names: values = list( range(0, int(TOTAL_PRICE / appetizer_prices[variable] + 1))) problem.add_variable(variable, values) problem.add_constraints(constraints) solver = ConstraintProblemSolver(problem) assignments = solver.solve() if assignments != None: print("Failed Constraints: {}".format( problem.check_constraints(assignments))) print_assignments(assignments)
same_house_constraint(nationality_variable_names, 'Ukraine', drink_variable_names, 'Tea'), right_of_constraint(color_variable_names, 'green', color_variable_names, 'white'), same_house_constraint(cigarette_variable_names, 'Atem-Gold', pet_variable_names, 'Snails'), same_house_constraint(cigarette_variable_names, 'Kools', color_variable_names, 'yellow'), equals_value_constraint('house3drink', 'Milk'), equals_value_constraint('house1nationality', 'Norway'), next_to_constraint(cigarette_variable_names, 'Chesterfield', pet_variable_names, 'Fox'), next_to_constraint(cigarette_variable_names, 'Kools', pet_variable_names, 'Horse'), same_house_constraint(cigarette_variable_names, 'Lucky-Strike', drink_variable_names, 'Orange juice'), same_house_constraint(nationality_variable_names, 'Japan', cigarette_variable_names, 'Parliaments'), next_to_constraint(nationality_variable_names, 'Norway', color_variable_names, 'blue'), #exists_constraint(drink_variable_names, 'Water'), #exists_constraint(pet_variable_names, 'Zebra') ] if __name__ == "__main__": problem = Problem() problem.add_variables(color_variable_names, color_variable_values) problem.add_variables(nationality_variable_names, nationality_variable_values) problem.add_variables(pet_variable_names, pet_variable_values) problem.add_variables(drink_variable_names, drink_variable_values) problem.add_variables(cigarette_variable_names, cigarette_variable_values) problem.add_constraints(constraints) solver = ConstraintProblemSolver(problem) assignments = solver.solve() if assignments != None: print("Failed Constraints: {}".format(problem.check_constraints(assignments))) print_assignments(assignments)