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)
print("{0: <3} ".format("Q"), end="") else: print("{0: <3} ".format("x"), end="") print() except (TypeError, KeyError): print ("No Solution!") if __name__ == "__main__": NUM_QUEENS = 8 if len(sys.argv) < 2 else int(sys.argv[1]) variable_names = tuple(((i+1) for i in range(NUM_QUEENS))) constraints = [ no_queens_check_constraint(variable_names) ] problem = Problem() for variable in variable_names: values = list(range(1, NUM_QUEENS+1)) shuffle(values) 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(NUM_QUEENS, assignments)