RosettaCodeData/Task/Generator-Exponential/Java/generator-exponential.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++;
}
}