Download or view KnapsackBounded.frink in plain text format
/** Solver for the Rosetta Code problem "Knapsack problem/Bounded"
https://rosettacode.org/wiki/Knapsack_problem/Bounded
*/
use knapsack.frink
// Item name, weight, value, piece(s)
i = [ ["map", 9, 150, 1],
["compass", 13, 35, 1],
["water", 153, 200, 3],
["sandwich", 50, 60, 2],
["glucose", 15, 60, 2],
["tin", 68, 45, 3],
["banana", 27, 60, 3],
["apple", 39, 40, 3],
["cheese", 23, 30, 1],
["beer", 52, 10, 3],
["suntan cream", 11, 70, 1],
["camera", 32, 30, 1],
["t-shirt", 24, 15, 2],
["trousers", 48, 10, 2],
["umbrella", 73, 40, 1],
["waterproof trousers", 42, 70, 1],
["waterproof overclothes", 43, 75, 1],
["note-case", 22, 80, 1],
["sunglasses", 7, 20, 1],
["towel", 18, 12, 2],
["socks", 4, 50, 1],
["book", 30, 10, 2]]
[maxvalue, maxweight, usedDict] = knapsackBounded[i.getColumn[2], // value
i.getColumn[1], // weight
i.getColumn[3], // count
400]
res = new array
for ind = sort[keys[usedDict]]
res.push[ [" ", i@ind@0 , ":", usedDict@ind] ]
println["Items:"]
println[formatTable[res, "right"]]
println[]
println["Total weight: $maxweight"]
println["Total value: $maxvalue"]
Download or view KnapsackBounded.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen, eliasen@mindspring.com