diff options
author | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-06-17 17:41:52 +0200 |
---|---|---|
committer | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-06-17 17:41:52 +0200 |
commit | e06ba8ea1346e5045a34508648ac93150aacb01a (patch) | |
tree | 5d214438109aef0c622c29c8b78ab608cb1fafd8 /src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java | |
parent | 1b9c7c47783a0872ca3bedfad6fb120f611d354b (diff) | |
download | JRummikub-e06ba8ea1346e5045a34508648ac93150aacb01a.tar JRummikub-e06ba8ea1346e5045a34508648ac93150aacb01a.zip |
Reimplemented AI (old one was too slow)
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@443 72836036-5685-4462-b002-a69064685172
Diffstat (limited to 'src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java')
-rw-r--r-- | src/jrummikub/ai/fdsolver/constraint/FilterConstraint.java | 65 |
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; - } - } - -} |