
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@436 72836036-5685-4462-b002-a69064685172
56 lines
1.7 KiB
Java
56 lines
1.7 KiB
Java
package jrummikub.ai.fdsolver;
|
|
|
|
import java.util.List;
|
|
|
|
import jrummikub.ai.fdsolver.constraint.Filter;
|
|
import jrummikub.ai.fdsolver.constraint.FilterConstraint;
|
|
import jrummikub.ai.fdsolver.constraint.IfConstraint;
|
|
import jrummikub.ai.fdsolver.constraint.IndexConstraint;
|
|
import jrummikub.ai.fdsolver.constraint.LessThan;
|
|
import jrummikub.ai.fdsolver.constraint.OffsetConstraint;
|
|
import jrummikub.ai.fdsolver.constraint.SameConstraint;
|
|
import jrummikub.ai.fdsolver.constraint.SumConstraint;
|
|
|
|
public class Constraints {
|
|
public static Constraint when(Var<Boolean> cond, Constraint c) {
|
|
return new IfConstraint(false, cond, c);
|
|
}
|
|
|
|
public static Constraint unless(Var<Boolean> cond, Constraint c) {
|
|
return new IfConstraint(true, cond, c);
|
|
}
|
|
|
|
|
|
public static <T> Constraint index(Var<T> target, Var<Integer> index, List<Var<T>> list) {
|
|
return new IndexConstraint<T>(target, index, list);
|
|
}
|
|
|
|
public static <T> Constraint constant(Var<T> target, final T constant) {
|
|
return new FilterConstraint<T>(new Filter<T>() {
|
|
@Override
|
|
public boolean accept(T value) {
|
|
return value.equals(constant);
|
|
}
|
|
}, target);
|
|
}
|
|
|
|
public static Constraint offset(int offset, Var<Integer> x, Var<Integer> y) {
|
|
return new OffsetConstraint(offset, x, y);
|
|
}
|
|
|
|
public static <T> Constraint same(Var<T> x, Var<T> y) {
|
|
return new SameConstraint<T>(x, y);
|
|
}
|
|
|
|
public static Constraint sum(Var<Integer> x, Var<Integer> y, Var<Integer> z) {
|
|
return new SumConstraint(x, y, z);
|
|
}
|
|
|
|
public static <T extends Comparable<T>> Constraint lessThan(Var<T> x, Var<T> y) {
|
|
return new LessThan<T>(false, x, y);
|
|
}
|
|
|
|
public static <T extends Comparable<T>> Constraint lessThanEq(Var<T> x, Var<T> y) {
|
|
return new LessThan<T>(true, x, y);
|
|
}
|
|
}
|