5 -6 8 10 12 3 10 0 0 0 0 0 0 1 = 10 0 0 0 0 0 1 0 = 3 0 0 0 0 0 1 1 = 3, 10 0 0 0 0 1 0 0 = 12 0 0 0 0 1 0 1 = 12, 10 ... 1 1 1 1 1 1 1 = 5, -6, 8, 10, 12, 3, 10 #### #!/usr/bin/perl use strict; use warnings; use List::Util 'sum'; my @amount = (5, -6, 8, 10, 12, 3, 10); my $count = @amount; for (1 .. 2 ** $count - 1) { my @bit = split //, sprintf("%.${count}b", $_); my $total = sum( map {$bit[$_] ? $amount[$_] : 0 } 0 .. $#bit); print "$total\n"; }