summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java')
-rw-r--r--src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java65
1 files changed, 0 insertions, 65 deletions
diff --git a/src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java b/src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java
deleted file mode 100644
index d01a109..0000000
--- a/src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package jrummikub.ai.fdsolver.constraint;
-
-import static jrummikub.ai.fdsolver.Satisfiability.SAT;
-import static jrummikub.ai.fdsolver.Satisfiability.TAUT;
-import static jrummikub.ai.fdsolver.Satisfiability.UNSAT;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-import jrummikub.ai.fdsolver.Constraint;
-import jrummikub.ai.fdsolver.Propagator;
-import jrummikub.ai.fdsolver.Satisfiability;
-import jrummikub.ai.fdsolver.Var;
-
-public class FilterConstraint<T> extends Constraint {
- private Var<T> var;
- private Propagator trueProp, falseProp;
- private Filter<T> filter;
-
- public FilterConstraint(final Filter<T> filter, Var<T> var) {
- this.var = var;
- this.filter = filter;
- trueProp = new FilterPropagator<T>(filter, var);
- falseProp = new FilterPropagator<T>(new Filter<T>() {
- @Override
- public boolean accept(T value) {
- return !filter.accept(value);
- }
- }, var);
- }
-
- @Override
- public Collection<Var<?>> getWatchedVars() {
- return Arrays.<Var<?>> asList(var);
- }
-
- @Override
- public Collection<Propagator> getPropagators(boolean negate) {
- return Arrays.asList(negate ? falseProp : trueProp);
- }
-
- @Override
- public Satisfiability getSatisfiability() {
- boolean any = false;
- boolean all = true;
-
- for (T value : var.getRange()) {
- boolean accepted = filter.accept(value);
- if (accepted) {
- any = true;
- } else {
- all = false;
- }
- }
-
- if (all && any) {
- return TAUT;
- } else if (any) {
- return SAT;
- } else {
- return UNSAT;
- }
- }
-
-}