mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-26 00:11:26 +07:00
new inference: accept deep nested lambdas (IDEA-125264)
This commit is contained in:
+70
@@ -0,0 +1,70 @@
|
||||
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
||||
abstract class Simplified {
|
||||
public List<Integer> gerFirstTriangles() {
|
||||
return flatMap(() -> flatMap(() -> map(z -> 1))).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
abstract <R> R flatMap(Supplier<R> mapper);
|
||||
abstract <R> Stream<R> map(Function<Integer, R> mapper);
|
||||
}
|
||||
|
||||
class PythagoreanTriangles {
|
||||
|
||||
static class Triplet<T,U,R>{
|
||||
private T t;
|
||||
private U u;
|
||||
private R r;
|
||||
|
||||
public Triplet(T t, U u, R r){
|
||||
this.t = t;
|
||||
this.u = u;
|
||||
this.r = r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return t.toString() + "," + u.toString() + "," + r.toString();
|
||||
}
|
||||
}
|
||||
|
||||
public void pythagoreanTriangles(Integer num){
|
||||
Stream<Integer> numbers = IntStream.rangeClosed(1,num).boxed();
|
||||
|
||||
Stream<Triplet<Integer, Integer, Integer>> triangles = numbers.flatMap(x -> {
|
||||
return IntStream.rangeClosed(1, x).boxed().flatMap(y -> {
|
||||
return IntStream.rangeClosed(1, y).boxed().filter(z -> {
|
||||
return x * x == y * y + z * z;
|
||||
}).map(z1 -> new Triplet<Integer, Integer, Integer>(x, y, z1));
|
||||
});
|
||||
});
|
||||
|
||||
triangles.forEach(System.out::println);
|
||||
|
||||
}
|
||||
|
||||
public List<Triplet<Integer, Integer, Integer>> gerFirstTriangles(long num){
|
||||
Stream<Integer> infinity = Stream.iterate(1, (n) -> n + 1);
|
||||
return infinity.flatMap(x -> {
|
||||
return IntStream.rangeClosed(1, x).boxed().flatMap(y -> {
|
||||
return IntStream.rangeClosed(1, y).boxed().filter(z -> {
|
||||
return x * x == y * y + z * z;
|
||||
}).map(z1 -> new Triplet<Integer, Integer, Integer>(x, y, z1));
|
||||
});
|
||||
}).limit(num).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
PythagoreanTriangles triangles = new PythagoreanTriangles();
|
||||
triangles.pythagoreanTriangles(10);
|
||||
triangles.gerFirstTriangles(5l).forEach(System.out::println);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user