8 my ($name) = /\A(\w+):/;
10 $prop{$name} = \@vals;
16 my ($amounts, $rem, $rest) = @_;
20 for my $p (keys %prop) {
21 $cal += $prop{$p}->[-1] * $amounts->{$p};
23 return if $cal != 500;
27 for my $p (keys %prop) {
28 $sum += $prop{$p}->[$t] * $amounts->{$p};
33 $max = $mul if !$max || $mul > $max;
35 for my $i (0 .. $#$rest) {
37 my ($ing) = splice @nr, $i, 1;
38 my $min = @nr ? 0 : $rem;
39 for my $a ($min .. $rem) {
42 addprop(\%na, $rem-$a, \@nr);
48 addprop({}, 100, [ keys %prop ]);