Knapsack problem/Continuous: Difference between revisions

Content added Content deleted
(→‎{{header|Oforth}}: Adding total value)
Line 1,842: Line 1,842:
[ "welt", 3.7, 67 ], [ "salami", 3.0, 95 ], [ "sausage", 5.9, 98 ]
[ "welt", 3.7, 67 ], [ "salami", 3.0, 95 ], [ "sausage", 5.9, 98 ]
] const: Items
] const: Items

: rob
: rob
| item |
| item value |
0.0 ->value
15.0 #[ dup second swap third / ] Items sortBy forEach: item [
15.0 #[ dup second swap third / ] Items sortBy forEach: item [
dup 0.0 == ifTrue: [ return ]
dup 0.0 == ifTrue: [ return ]
dup item second >= ifTrue: [ "Taking" . item first . " :" . item second dup .cr - continue ]
dup item second >= ifTrue: [
"And part of" . item first . " :" . . return
"Taking" . item first . " :" . item second dup .cr -
item third value + ->value continue
]
"And part of" . item first . " :" . dup .cr
item third * item second / value + "Total value :" . .cr break
] ;</lang>
] ;</lang>


Line 1,859: Line 1,864:
Taking greaves : 2.4
Taking greaves : 2.4
And part of welt : 3.5 ok
And part of welt : 3.5 ok
Total value : 349.378378378378
</pre>
</pre>