# # This software is Copyright 2005 by Elsevier Inc. You may use it # under the terms of the license at http://perl.plover.com/hop/LICENSE.txt . # ### ### make_partition_cleaner ### ## Chapter 5 section 2 sub make_partition { my $n = shift; my @agenda = [$n]; return Iterator { return unless @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; }; }