package aima.core.search.csp.examples; import java.util.ArrayList; import java.util.List; import aima.core.search.csp.Assignment; import aima.core.search.csp.Constraint; import aima.core.search.csp.Variable; /** * Represents a binary constraint which forbids equal values. * * @author Ruediger Lunde */ public class NotEqualConstraint<VAR extends Variable, VAL> implements Constraint<VAR, VAL> { private VAR var1; private VAR var2; private List<VAR> scope; public NotEqualConstraint(VAR var1, VAR var2) { this.var1 = var1; this.var2 = var2; scope = new ArrayList<>(2); scope.add(var1); scope.add(var2); } @Override public List<VAR> getScope() { return scope; } @Override public boolean isSatisfiedWith(Assignment<VAR, VAL> assignment) { Object value1 = assignment.getValue(var1); return value1 == null || !value1.equals(assignment.getValue(var2)); } }