package jrummikub.ai.fdsolver.constraint; import java.util.Arrays; import java.util.Collection; import java.util.Iterator; import jrummikub.ai.fdsolver.Propagator; import jrummikub.ai.fdsolver.Var; public class FilterPropagator implements Propagator { private Filter filter; private Var var; public FilterPropagator(Filter filter, Var var) { this.filter = filter; this.var = var; } @Override public Collection> getWatchedVars() { return Arrays.>asList(var); } @Override public void propagate() { for(Iterator i = var.iterator(); i.hasNext();) { if(!filter.accept(i.next())) i.remove(); } } }