Knapsack problem/Continuous: Difference between revisions
Content added Content deleted
Walterpachl (talk | contribs) (add ooRexx translated from REXX version 2) |
Walterpachl (talk | contribs) m (move to proper position :-() |
||
Line 1,236:
Printf.printf " Total Price: %.3f\n" (float price +. last_price);
;;</lang>
=={{header|Perl}}==▼
<lang perl>my @items = sort { $b->[2]/$b->[1] <=> $a->[2]/$a->[1] }▼
(▼
[qw'beef 3.8 36'],▼
[qw'pork 5.4 43'],▼
[qw'ham 3.6 90'],▼
[qw'greaves 2.4 45'],▼
[qw'flitch 4.0 30'],▼
[qw'brawn 2.5 56'],▼
[qw'welt 3.7 67'],▼
[qw'salami 3.0 95'],▼
[qw'sausage 5.9 98'],▼
);▼
my ($limit, $value) = (15, 0);▼
print "item fraction weight value\n";▼
for (@items) {▼
my $ratio = $_->[1] > $limit ? $limit/$_->[1] : 1;▼
print "$_->[0]\t";▼
$value += $_->[2] * $ratio;▼
$limit -= $_->[1];▼
if ($ratio == 1) {▼
print " all\t$_->[1]\t$_->[2]\n";▼
} else {▼
printf "%5.3f %s %8.3f\n", $ratio, $_->[1] * $ratio, $_->[2] * $ratio;▼
last;▼
}▼
}▼
print "-" x 40, "\ntotal value: $value\n";▼
</lang>▼
Output:<pre>item fraction weight value▼
salami all 3.0 95▼
ham all 3.6 90▼
brawn all 2.5 56▼
greaves all 2.4 45▼
welt 0.946 3.5 63.378▼
----------------------------------------▼
total value: 349.378378378378▼
</pre>▼
=={{header|ooRexx}}==
Line 1,378 ⟶ 1,335:
total 15.000 349.378</pre>
▲=={{header|Perl}}==
▲<lang perl>my @items = sort { $b->[2]/$b->[1] <=> $a->[2]/$a->[1] }
▲(
▲ [qw'beef 3.8 36'],
▲ [qw'pork 5.4 43'],
▲ [qw'ham 3.6 90'],
▲ [qw'greaves 2.4 45'],
▲ [qw'flitch 4.0 30'],
▲ [qw'brawn 2.5 56'],
▲ [qw'welt 3.7 67'],
▲ [qw'salami 3.0 95'],
▲ [qw'sausage 5.9 98'],
▲);
▲my ($limit, $value) = (15, 0);
▲print "item fraction weight value\n";
▲for (@items) {
▲ my $ratio = $_->[1] > $limit ? $limit/$_->[1] : 1;
▲ print "$_->[0]\t";
▲ $value += $_->[2] * $ratio;
▲ $limit -= $_->[1];
▲ if ($ratio == 1) {
▲ print " all\t$_->[1]\t$_->[2]\n";
▲ } else {
▲ printf "%5.3f %s %8.3f\n", $ratio, $_->[1] * $ratio, $_->[2] * $ratio;
▲ last;
▲ }
▲}
▲print "-" x 40, "\ntotal value: $value\n";
▲</lang>
▲Output:<pre>item fraction weight value
▲salami all 3.0 95
▲ham all 3.6 90
▲brawn all 2.5 56
▲greaves all 2.4 45
▲welt 0.946 3.5 63.378
▲----------------------------------------
▲total value: 349.378378378378
▲</pre>
=={{header|Perl 6}}==
|