for $i (0..1) {
for $j ($i+1..3) {
for $k ($j+1..5) {
for $l ($k+1..7) {
####
my $depth = 4;
my $loop = [[0..1]];
my $val = 3;
for my $i (1..$depth-1) {
push @$loop, sub {[$_+1..$val]};
$val+=2;
}
my $iter = NestedLoops($loop);
while (my @list = $iter->()) {
output(@list);
}
sub output {
my @args = @_;
print join '', @args, "\n";
}
####
my $n = shift;
sub plustwo_iter {
my $val = 1;
return sub {
$val +=2;
return $val;
}
}
my $p = plustwo_iter();
my $loop = [[0..1], (sub {[$_+1..&$p]}) x ($n-2)];
my $iter = NestedLoops($loop);
while (my @list = $iter->()) {
output(@list);
}