Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,73 @@
|
|||
window 1, @"Knapsack Problem", (0,0,480,270)
|
||||
|
||||
_maxWeight = 400
|
||||
|
||||
void local fn FillKnapsack
|
||||
long totalWeight = 0, totalValue = 0, itemWeight, unusedWeight
|
||||
CFDictionaryRef item, extraItem = NULL
|
||||
SortDescriptorRef sd
|
||||
CFMutableArrayRef packedItems
|
||||
|
||||
CFArrayRef items = @[
|
||||
@{@"item":@"map", @"weight":@9, @"value":@150},
|
||||
@{@"item":@"compass", @"weight":@13, @"value":@35 },
|
||||
@{@"item":@"water", @"weight":@153, @"value":@200},
|
||||
@{@"item":@"sandwich", @"weight":@50, @"value":@160},
|
||||
@{@"item":@"glucose", @"weight":@15, @"value":@60 },
|
||||
@{@"item":@"tin", @"weight":@68, @"value":@45 },
|
||||
@{@"item":@"banana", @"weight":@27, @"value":@60 },
|
||||
@{@"item":@"apple", @"weight":@39, @"value":@40 },
|
||||
@{@"item":@"cheese", @"weight":@23, @"value":@30 },
|
||||
@{@"item":@"beer", @"weight":@52, @"value":@10 },
|
||||
@{@"item":@"suntan cream", @"weight":@11, @"value":@70 },
|
||||
@{@"item":@"camera", @"weight":@32, @"value":@30 },
|
||||
@{@"item":@"T-shirt", @"weight":@24, @"value":@15 },
|
||||
@{@"item":@"trousers", @"weight":@48, @"value":@10 },
|
||||
@{@"item":@"umbrella", @"weight":@73, @"value":@40 },
|
||||
@{@"item":@"waterproof trousers", @"weight":@42, @"value":@70 },
|
||||
@{@"item":@"waterproof overclothes", @"weight":@43, @"value":@75 },
|
||||
@{@"item":@"note-case", @"weight":@22, @"value":@80 },
|
||||
@{@"item":@"sunglasses", @"weight":@7, @"value":@20 },
|
||||
@{@"item":@"towel", @"weight":@18, @"value":@12 },
|
||||
@{@"item":@"socks", @"weight":@4, @"value":@50 },
|
||||
@{@"item":@"book", @"weight":@30, @"value":@10 }
|
||||
]
|
||||
|
||||
sd = fn SortDescriptorWithKey( @"value", NO )
|
||||
items = fn ArraySortedArrayUsingDescriptors( items, @[sd] )
|
||||
packedItems = fn MutableArrayWithCapacity(0)
|
||||
for item in items
|
||||
itemWeight = fn NumberIntegerValue(item[@"weight"])
|
||||
if ( totalWeight + itemWeight <= _maxWeight )
|
||||
MutableArrayAddObject( packedItems, item )
|
||||
totalWeight += itemWeight
|
||||
totalValue += fn NumberIntegerValue(item[@"value"])
|
||||
end if
|
||||
next
|
||||
|
||||
text @"Menlo-Bold",,, fn ColorWithRGB(1.0,0.0,1.0,0.25),, 170
|
||||
print @"Item",@"Weight",@"Value"
|
||||
text @"Menlo",,, fn ColorClear
|
||||
for item in packedItems
|
||||
printf @"%@\t%6ld\t%5ld",item[@"item"],fn NumberIntegerValue(item[@"weight"]),fn NumberIntegerValue(item[@"value"])
|
||||
next
|
||||
text ,,, fn ColorWithRGB(1.0,0.0,1.0,0.25)
|
||||
printf @"knapsack\t%6ld\t%5ld",totalWeight,totalValue
|
||||
|
||||
text
|
||||
print
|
||||
|
||||
unusedWeight = _maxWeight - totalWeight
|
||||
|
||||
for item in items
|
||||
if ( fn NumberIntegerValue(item[@"weight"]) <= unusedWeight )
|
||||
extraItem = item : break
|
||||
end if
|
||||
next
|
||||
|
||||
if ( extraItem ) then printf @"There's just enough room for extra %@!", extraItem[@"item"]
|
||||
end fn
|
||||
|
||||
fn FillKnapsack
|
||||
|
||||
HandleEvents
|
||||
Loading…
Add table
Add a link
Reference in a new issue