package lrs.visitor; import lrs.IAlgo; import lrs.LRStruct; /** * Removes multiples of the input N (> 0) from the host. * @author D. X. Nguyen */ public class FilterN implements IAlgo { public static final FilterN Singleton = new FilterN(); private FilterN() { } public Object emptyCase(LRStruct host, Object N) { return null; } /** * @param N Integer > 0. */ public Object nonEmptyCase(LRStruct host, Object N) { int n = ((Integer)N).intValue(); int f = ((Integer)host.getFirst()).intValue(); if (f % n == 0) { host.removeFront(); return host.execute(this, N); } return host.getRest().execute(this, N) ; } }