my $n=15; my @l = p($n,$n); foreach my $t (@l) { print "@$t\n"; } print scalar(@l)," partitions.\n"; sub p($$) { my ($n,$k) = @_; return () if ($n<0); return ([]) if ($n==0); return () if ($k==0); return (p($n,$k-1),f($k,p($n-$k,$k))); } sub f($@) { my $k=shift; return map { [@$_,$k] } @_; } ---------------------------------------- 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1 1 1 1 1 2 2 2 2 1 1 1 1 1 2 2 2 2 2 1 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 2 3 1 1 1 1 1 1 1 1 2 2 3 1 1 1 1 1 1 2 2 2 3 1 1 1 1 2 2 2 2 3 1 1 2 2 2 2 2 3 2 2 2 2 2 2 3 1 1 1 1 1 1 1 1 1 3 3 1 1 1 1 1 1 1 2 3 3 1 1 1 1 1 2 2 3 3 1 1 1 2 2 2 3 3 1 2 2 2 2 3 3 1 1 1 1 1 1 3 3 3 1 1 1 1 2 3 3 3 1 1 2 2 3 3 3 2 2 2 3 3 3 1 1 1 3 3 3 3 1 2 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 1 1 2 4 1 1 1 1 1 1 1 2 2 4 1 1 1 1 1 2 2 2 4 1 1 1 2 2 2 2 4 1 2 2 2 2 2 4 1 1 1 1 1 1 1 1 3 4 1 1 1 1 1 1 2 3 4 1 1 1 1 2 2 3 4 1 1 2 2 2 3 4 2 2 2 2 3 4 1 1 1 1 1 3 3 4 1 1 1 2 3 3 4 1 2 2 3 3 4 1 1 3 3 3 4 2 3 3 3 4 1 1 1 1 1 1 1 4 4 1 1 1 1 1 2 4 4 1 1 1 2 2 4 4 1 2 2 2 4 4 1 1 1 1 3 4 4 1 1 2 3 4 4 2 2 3 4 4 1 3 3 4 4 1 1 1 4 4 4 1 2 4 4 4 3 4 4 4 1 1 1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 1 1 2 5 1 1 1 1 1 1 2 2 5 1 1 1 1 2 2 2 5 1 1 2 2 2 2 5 2 2 2 2 2 5 1 1 1 1 1 1 1 3 5 1 1 1 1 1 2 3 5 1 1 1 2 2 3 5 1 2 2 2 3 5 1 1 1 1 3 3 5 1 1 2 3 3 5 2 2 3 3 5 1 3 3 3 5 1 1 1 1 1 1 4 5 1 1 1 1 2 4 5 1 1 2 2 4 5 2 2 2 4 5 1 1 1 3 4 5 1 2 3 4 5 3 3 4 5 1 1 4 4 5 2 4 4 5 1 1 1 1 1 5 5 1 1 1 2 5 5 1 2 2 5 5 1 1 3 5 5 2 3 5 5 1 4 5 5 5 5 5 1 1 1 1 1 1 1 1 1 6 1 1 1 1 1 1 1 2 6 1 1 1 1 1 2 2 6 1 1 1 2 2 2 6 1 2 2 2 2 6 1 1 1 1 1 1 3 6 1 1 1 1 2 3 6 1 1 2 2 3 6 2 2 2 3 6 1 1 1 3 3 6 1 2 3 3 6 3 3 3 6 1 1 1 1 1 4 6 1 1 1 2 4 6 1 2 2 4 6 1 1 3 4 6 2 3 4 6 1 4 4 6 1 1 1 1 5 6 1 1 2 5 6 2 2 5 6 1 3 5 6 4 5 6 1 1 1 6 6 1 2 6 6 3 6 6 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 2 7 1 1 1 1 2 2 7 1 1 2 2 2 7 2 2 2 2 7 1 1 1 1 1 3 7 1 1 1 2 3 7 1 2 2 3 7 1 1 3 3 7 2 3 3 7 1 1 1 1 4 7 1 1 2 4 7 2 2 4 7 1 3 4 7 4 4 7 1 1 1 5 7 1 2 5 7 3 5 7 1 1 6 7 2 6 7 1 7 7 1 1 1 1 1 1 1 8 1 1 1 1 1 2 8 1 1 1 2 2 8 1 2 2 2 8 1 1 1 1 3 8 1 1 2 3 8 2 2 3 8 1 3 3 8 1 1 1 4 8 1 2 4 8 3 4 8 1 1 5 8 2 5 8 1 6 8 7 8 1 1 1 1 1 1 9 1 1 1 1 2 9 1 1 2 2 9 2 2 2 9 1 1 1 3 9 1 2 3 9 3 3 9 1 1 4 9 2 4 9 1 5 9 6 9 1 1 1 1 1 10 1 1 1 2 10 1 2 2 10 1 1 3 10 2 3 10 1 4 10 5 10 1 1 1 1 11 1 1 2 11 2 2 11 1 3 11 4 11 1 1 1 12 1 2 12 3 12 1 1 13 2 13 1 14 15 176 partitions.