34 lines
1.0 KiB
Java
34 lines
1.0 KiB
Java
// Boilerplate
|
|
import java.util.Arrays;
|
|
import java.util.List;
|
|
import static java.util.function.Function.identity;
|
|
import static java.util.stream.Collectors.toList;
|
|
import static java.util.stream.IntStream.range;
|
|
public interface PythagComp{
|
|
static void main(String... args){
|
|
System.out.println(run(20));
|
|
}
|
|
|
|
static List<List<Integer>> run(int n){
|
|
return
|
|
// Here comes the list comprehension bit
|
|
// input stream - bit clunky
|
|
range(1, n).mapToObj(
|
|
x -> range(x, n).mapToObj(
|
|
y -> range(y, n).mapToObj(
|
|
z -> new Integer[]{x, y, z}
|
|
)
|
|
)
|
|
)
|
|
.flatMap(identity())
|
|
.flatMap(identity())
|
|
// predicate
|
|
.filter(a -> a[0]*a[0] + a[1]*a[1] == a[2]*a[2])
|
|
// output expression
|
|
.map(Arrays::asList)
|
|
// the result is a list
|
|
.collect(toList())
|
|
;
|
|
}
|
|
}
|