54 lines
1.2 KiB
Java
54 lines
1.2 KiB
Java
import java.util.function.LongSupplier;
|
|
import static java.util.stream.LongStream.generate;
|
|
|
|
public class GeneratorExponential implements LongSupplier {
|
|
private LongSupplier source, filter;
|
|
private long s, f;
|
|
|
|
public GeneratorExponential(LongSupplier source, LongSupplier filter) {
|
|
this.source = source;
|
|
this.filter = filter;
|
|
f = filter.getAsLong();
|
|
}
|
|
|
|
@Override
|
|
public long getAsLong() {
|
|
s = source.getAsLong();
|
|
|
|
while (s == f) {
|
|
s = source.getAsLong();
|
|
f = filter.getAsLong();
|
|
}
|
|
|
|
while (s > f) {
|
|
f = filter.getAsLong();
|
|
}
|
|
|
|
return s;
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
generate(new GeneratorExponential(new SquaresGen(), new CubesGen()))
|
|
.skip(20).limit(10)
|
|
.forEach(n -> System.out.printf("%d ", n));
|
|
}
|
|
}
|
|
|
|
class SquaresGen implements LongSupplier {
|
|
private long n;
|
|
|
|
@Override
|
|
public long getAsLong() {
|
|
return n * n++;
|
|
}
|
|
}
|
|
|
|
class CubesGen implements LongSupplier {
|
|
private long n;
|
|
|
|
@Override
|
|
public long getAsLong() {
|
|
return n * n * n++;
|
|
}
|
|
}
|