Knapsack problem/Continuous: Difference between revisions

Content added Content deleted
(Added 11l)
Line 51: Line 51:
*   Wikipedia article:   [[wp:Continuous_knapsack_problem|continuous knapsack]].
*   Wikipedia article:   [[wp:Continuous_knapsack_problem|continuous knapsack]].
<br><br>
<br><br>

=={{header|11l}}==
{{trans|Python}}

<lang 11l>V items = [(‘beef’, 3.8, 36.0),
(‘pork’, 5.4, 43.0),
(‘ham’, 3.6, 90.0),
(‘greaves’, 2.4, 45.0),
(‘flitch’, 4.0, 30.0),
(‘brawn’, 2.5, 56.0),
(‘welt’, 3.7, 67.0),
(‘salami’, 3.0, 95.0),
(‘sausage’, 5.9, 98.0)]

V MAXWT = 15.0

V sorted_items = sorted(items.map((name, amount, value) -> (value / amount, amount, name)), reverse' 1B)
V wt = 0.0
V val = 0.0
[(String, Float, Float)] bagged

L(unit_value, amount, name) sorted_items
V portion = min(MAXWT - wt, amount)
wt += portion
V addval = portion * unit_value
val += addval
bagged [+]= (name, portion, addval)
I wt >= MAXWT
L.break

print(‘ ITEM PORTION VALUE’)
print(bagged.map((n, p, a) -> ‘#10 #3.2 #3.2’.format(n, p, a)).join("\n"))
print("\nTOTAL WEIGHT: #2.2\nTOTAL VALUE: #2.2".format(wt, val))</lang>

{{out}}
<pre>
ITEM PORTION VALUE
salami 3.00 95.00
ham 3.60 90.00
brawn 2.50 56.00
greaves 2.40 45.00
welt 3.50 63.38

TOTAL WEIGHT: 15.00
TOTAL VALUE: 349.38
</pre>


=={{header|Ada}}==
=={{header|Ada}}==