Files
devops/perl/Examples/Chap5/make-partition-1
2025-09-17 16:08:16 +08:00

26 lines
415 B
Plaintext

###
### make_partition
###
## Chapter 5 section 2
sub make_partition {
my $n = shift;
my @agenda = [$n];
return Iterator {
while (@agenda) {
my $item = pop @agenda;
my ($largest, @rest) = @$item;
my $min = $rest[0] || 1;
my $max = int($largest/2);
for ($min .. $max) {
push @agenda, [$largest-$_, $_, @rest];
}
return $item;
}
return;
};
}