Constraint satisfaction problems
Use me when:
Variables: {X1, X2, X3, ..., Xn}
Domains: {D1, D2, D3, ..., Dn}
Constraints: {C1, C2, C3, ..., Cm}
Goal: Find assignment to all variables satisfying all constraints
from constraint import Problem, BacktrackingSolver
# Define problem
problem = Problem(BacktrackingSolver())
# Variables with domains
problem.addVariable("A", [1, 2, 3, 4])
problem.addVariable("B", [1, 2, 3, 4])
problem.addVariable("C", [1, 2, 3, 4])
# Constraints
def all_different(vars):
return len(set(vars)) == len(vars)
problem.addConstraint(all_different, ["A", "B", "C"])
problem.addConstraint(lambda a, b: a + b > 4, ["A", "B"])
problem.addConstraint(lambda b, c: b != c, ["B", "C"])
# Solve
solutions = problem.getSolutions()
print(solutions)