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));
}
}