コード例 #1
0
constraints = [
    alldiff(variable_names),
    sum_modulo_ten_or_plus_one_constraint('D', 'E', 'Y'),
    sum_modulo_ten_or_plus_one_constraint('N', 'R', 'E'),
    sum_modulo_ten_or_plus_one_constraint('E', 'O', 'N'),
    sum_modulo_ten_or_plus_one_constraint('S', 'M', 'O'),
    Constraint(
        lambda s, e, n, d, m, o, r, y: 1000 * s + 100 * e + 10 * n + d + 1000 *
        m + 100 * o + 10 * r + e == 10000 * m + 1000 * o + 100 * n + 10 * e +
        y, ('S', 'E', 'N', 'D', 'M', 'O', 'R', 'Y'))
]

if __name__ == "__main__":
    problem = Problem()
    problem.add_variables(('S', ), range(0, 10))
    problem.add_variables(('E', ), range(0, 10))
    problem.add_variables(('N', ), range(0, 10))
    problem.add_variables(('D', ), range(0, 10))
    problem.add_variables(('M', ), range(1, 10))
    problem.add_variables(('O', ), range(0, 10))
    problem.add_variables(('R', ), range(0, 10))
    problem.add_variables(('Y', ), range(0, 10))

    problem.add_constraints(constraints)

    solver = ConstraintProblemSolver(problem)
    assignments = solver.solve()
    if assignments != None:
        print("Failed Constraints: {}".format(
            problem.check_constraints(assignments)))
コード例 #2
0
    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)
コード例 #3
0
    variables_equal_constraint('Coffee', 'green'),
    variables_equal_constraint('Ukraine', 'Tea'),
    diff_constraint('green', 'white', 1),
    variables_equal_constraint('Atem-Gold', 'Snails'),
    variables_equal_constraint('Kools', 'yellow'),
    equals_value_constraint('Milk', 3),
    equals_value_constraint('Norway', 1),
    absolute_diff_constraint('Chesterfield', 'Fox', 1),
    absolute_diff_constraint('Kools', 'Horse', 1),
    variables_equal_constraint('Lucky-Strike', 'Orange juice'),
    variables_equal_constraint('Japan', 'Parliaments'),
    absolute_diff_constraint('Norway', 'blue', 1),
]

if __name__ == "__main__":
    problem = Problem()
    problem.add_variables(color_variable_names, range(1, 6))
    problem.add_variables(nationality_variable_names, range(1, 6))
    problem.add_variables(pet_variable_names, range(1, 6))
    problem.add_variables(drink_variable_names, range(1, 6))
    problem.add_variables(cigarette_variable_names, range(1, 6))

    problem.add_constraints(constraints)

    solver = ConstraintProblemSolver(problem)
    assignments = solver.solve()
    if assignments != None:
        print("Failed Constraints: {}".format(problem.check_constraints(assignments)))
    print_assignments(assignments)