package aima.core.search.csp.examples;
import aima.core.search.csp.CSP;
import aima.core.search.csp.Domain;
import aima.core.search.csp.Variable;
import java.util.ArrayList;
import java.util.List;
public class NQueensCSP extends CSP<Variable, Integer> {
public NQueensCSP(int size) {
for (int i = 0; i < size; i++)
addVariable(new Variable("Q" + (i+1)));
List<Integer> values = new ArrayList<>();
for (int val = 1; val <= size; val++)
values.add(val);
Domain<Integer> positions = new Domain<>(values);
for (Variable var : getVariables())
setDomain(var, positions);
for (int i = 0; i < size; i++) {
Variable var1 = getVariables().get(i);
for (int j = i+1; j < size; j++) {
Variable var2 = getVariables().get(j);
addConstraint(new DiffNotEqualConstraint(var1, var2, 0));
addConstraint(new DiffNotEqualConstraint(var1, var2, j-i));
}
}
}
}