Jump to content

Knapsack problem/Continuous: Difference between revisions

→‎{{header|Ruby}}: items(Hash -> Array), correct output format
(jq)
(→‎{{header|Ruby}}: items(Hash -> Array), correct output format)
Line 2,322:
 
=={{header|Ruby}}==
<lang ruby>items = [ [:beef , 3.8, 36],
[:pork , 5.4, 43],
# Solve Continuous Knapsdack Problem
:ham => [:ham , 3.6, 90],
#
[:greaves, 2.4, 45],
# Nigel_Galloway
[:flitch , 4.0, 30],
# September 8th., 2014.
[:brawn , 2.5, 56],
maxW, value = 15, 0
{:beef => [:welt , 3.87,36 67],
:pork => [5:salami , 3.40,43 95],
[:sausage, 5.9, 98] ].sort_by{|item, weight, price| -price / weight}
:ham => [3.6,90],
maxW, value = 15.0, 0
:greaves => [2.4,45],
items.each do |item, weight, price|
:flitch => [4.0,30],
if (maxW -=g[0] weight) > 0
:brawn => [2.5,56],
puts "Take all #{nitem}"
:welt => [3.7,67],
value += g[1]price
:salami => [3.0,95],
:sausage => [5.9,98]}.sort_by{|n,g| -1*g[1]/g[0]}.each{|n,g|
if (maxW-=g[0]) > 0
puts "Take all #{n}"
value += g[1]
else
puts "Take #{t=g[0]+maxW}kg #{n}\n\nTotal value%gkg of swag%s" is% #{value[t=weight+(g[1maxW, item]/g[0])*t}, "",
"Total value of swag is %g" % (value+(price/weight)*t)
break
end
end</lang>
}
</lang>
{{out}}
<pre>
Line 2,352 ⟶ 2,348:
Take all brawn
Take all greaves
Take 3.5kg of welt
 
Total value of swag is 349.378378378378378
</pre>
 
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.