Files
devops/perl/Examples/Chap4/permute-n
2025-09-17 16:08:16 +08:00

28 lines
436 B
Plaintext

###
### permute-n
###
## Chapter 4 section 3.1
sub n_to_pat {
my @odometer;
my ($n, $length) = @_;
for my $i (1 .. $length) {
unshift @odometer, $n % $i;
$n = int($n/$i);
}
return $n ? () : @odometer;
}
sub permute {
my @items = @_;
my $n = 0;
return Iterator {
my @pattern = n_to_pat($n, scalar(@items));
my @result = pattern_to_permutation(\@pattern, \@items);
$n++;
return @result;
};
}