Exemple #1
0
    return value_o + value_o == value_c1 * 10 + value_r


constraints.append((("O", "R", "c1"), last_column_sum))

# restriction: middle column sum works
# restriction: first column sum works


def normal_column_sum(variables, values):
    value_c_in, value_summed_letter, value_result_letter, value_c_out = values
    return value_summed_letter + value_summed_letter + value_c_in == value_c_out * 10 + value_result_letter


constraints.append((("c1", "W", "U", "c2"), normal_column_sum))
constraints.append((("c2", "T", "O", "F"), normal_column_sum))

problem = CspProblem(problem_variables, domains, constraints)
solution = backtrack(problem)

print("Solution:")
print(solution)

#  0  0  0
#     1  3  2
# +   1  3  2
# -------------
#  0  2  6  4

# {'T': 1, 'W': 3, 'O': 2, 'F': 0, 'U': 6, 'R': 4, 'c1': 0, 'c2': 0}
Exemple #2
0
def const_different(variables, values):
    return values[0] == values[
        1]  # expect the value of the neighbors to be different


constraints = [
    (('WA', 'NT'), const_different),
    (('WA', 'SA'), const_different),
    (('SA', 'NT'), const_different),
    (('SA', 'Q'), const_different),
    (('NT', 'Q'), const_different),
    (('SA', 'NSW'), const_different),
    (('Q', 'NSW'), const_different),
    (('SA', 'V'), const_different),
    (('NSW', 'V'), const_different),
]

my_problem = CspProblem(variables, domains, constraints)

print backtrack(my_problem)
print backtrack(my_problem, variable_heuristic=MOST_CONSTRAINED_VARIABLE)
print backtrack(my_problem, variable_heuristic=HIGHEST_DEGREE_VARIABLE)
print backtrack(my_problem, value_heuristic=LEAST_CONSTRAINING_VALUE)
print backtrack(my_problem,
                variable_heuristic=MOST_CONSTRAINED_VARIABLE,
                value_heuristic=LEAST_CONSTRAINING_VALUE)
print backtrack(my_problem,
                variable_heuristic=HIGHEST_DEGREE_VARIABLE,
                value_heuristic=LEAST_CONSTRAINING_VALUE)
print min_conflicts(my_problem)