sub partitions { my $n = shift; my @partitions = 1; for my $i (1..$n) { for my $j (0..($n-$i)) { $partitions[$i+$j] += $partitions[$j]; } } return $partitions[$n]; }