Knapsack problem/Continuous: Difference between revisions
Content added Content deleted
(jq) |
(→{{header|Ruby}}: items(Hash -> Array), correct output format) |
||
Line 2,322: | Line 2,322: | ||
=={{header|Ruby}}== |
=={{header|Ruby}}== |
||
<lang ruby> |
<lang ruby>items = [ [:beef , 3.8, 36], |
||
[:pork , 5.4, 43], |
|||
# Solve Continuous Knapsdack Problem |
|||
⚫ | |||
# |
|||
[:greaves, 2.4, 45], |
|||
# Nigel_Galloway |
|||
[:flitch , 4.0, 30], |
|||
# September 8th., 2014. |
|||
[:brawn , 2.5, 56], |
|||
⚫ | |||
[:welt , 3.7, 67], |
|||
[:salami , 3.0, 95], |
|||
[:sausage, 5.9, 98] ].sort_by{|item, weight, price| -price / weight} |
|||
⚫ | |||
⚫ | |||
:greaves => [2.4,45], |
|||
items.each do |item, weight, price| |
|||
:flitch => [4.0,30], |
|||
⚫ | |||
:brawn => [2.5,56], |
|||
⚫ | |||
:welt => [3.7,67], |
|||
⚫ | |||
:salami => [3.0,95], |
|||
:sausage => [5.9,98]}.sort_by{|n,g| -1*g[1]/g[0]}.each{|n,g| |
|||
⚫ | |||
⚫ | |||
⚫ | |||
else |
else |
||
puts "Take |
puts "Take %gkg of %s" % [t=weight+maxW, item], "", |
||
"Total value of swag is %g" % (value+(price/weight)*t) |
|||
break |
break |
||
end |
end |
||
⚫ | |||
} |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Line 2,352: | Line 2,348: | ||
Take all brawn |
Take all brawn |
||
Take all greaves |
Take all greaves |
||
Take 3.5kg welt |
Take 3.5kg of welt |
||
Total value of swag is 349. |
Total value of swag is 349.378 |
||
</pre> |
</pre> |
||