Knapsack problem/Continuous: Difference between revisions

m
Added the Sidef language
m (Added the Sidef language)
Line 2,547:
salami Value: 475.0 Weight: 15.0
-------- Total 475.0 Weight: 15.0</pre>
 
=={{header|Sidef}}==
{{trans|Perl}}
<lang ruby>var items =
[
[:beef, 3.8, 36],
[:pork, 5.4, 43],
[:ham, 3.6, 90],
[:greaves, 2.4, 45],
[:flitch, 4.0, 30],
[:brawn, 2.5, 56],
[:welt, 3.7, 67],
[:salami, 3.0, 95],
[:sausage, 5.9, 98],
].sort {|a,b| b[2]/b[1] <=> a[2]/a[1] };
 
var (limit, value) = (15, 0);
print "Item Fraction Weight Value\n";
 
items.each { |item|
var ratio = (item[1] > limit ? limit/item[1] : 1);
value += item[2]*ratio;
limit -= item[1];
if (ratio == 1) {
printf("%-8s %-4s %7.2f %6.2f\n", item[0], 'all', item[1], item[2]);
}
else {
printf("%-8s %-4.2f %7.2f %6.2f\n", item[0], ratio, item[1]*ratio, item[2]*ratio);
break;
}
};
 
say "#{'-'*28}\ntotal value: #{'%.14g' % value }";</lang>
{{out}}
<pre>
Item Fraction Weight Value
salami all 3.00 95.00
ham all 3.60 90.00
brawn all 2.50 56.00
greaves all 2.40 45.00
welt 0.95 3.50 63.38
----------------------------
total value: 349.37837837838
</pre>
 
=={{header|Tcl}}==
2,747

edits