xxxxxxxxxx
import std.algorithm;
import std.range;
import std.stdio;
import std.typecons;
alias Triple = Tuple!(int, "x", int, "y", int, "z");
alias jmap(alias pred) = range => range.map!pred.joiner;
auto printNTriples(int n)
{
return iota(1, int.max).jmap!(
z => iota(1, z + 1).jmap!(
x => iota(x, z + 1).map!(
y => Triple(x, y, z))))
.filter!((triple) {
with (triple) {
return x*x + y*y == z*z;
}
})
.take(n);
}
void main()
{
foreach(tup; printNTriples(4))
{
writeln(tup);
}
}