# # 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 . # ### ### partition-iterator-clumsy ### ## Chapter 5 section 2 sub make_partition { my $n = shift; my @agenda = ([$n, # $largest [], # \@rest 1, # $min int($n/2), # $max ]); return Iterator { while (@agenda) { my $item = pop @agenda; my ($largest, $rest, $min, $max) = @$item; for ($min .. $max) { push @agenda, [$largest - $_, # $largest [$_, @$rest], # \@rest $_, # $min int(($largest - $_)/2), # $max ]; } return [$largest, @$rest]; } return; }; }