This repository has been archived on 2025-03-02. You can view files and clone it, but cannot push or open issues or pull requests.
JRummikub/src/jrummikub/ai/fdsolver/Constraints.java
Jannis Harder 7568f37824 Added TurnLogic with rule variables and constraints
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@436 72836036-5685-4462-b002-a69064685172
2011-06-14 17:48:22 +02:00

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