Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,61 @@
V items = [
sandwich = (50, 60, 2),
map = (9, 150, 1),
compass = (13, 35, 1),
water = (153, 200, 3),
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),
w-trousers = (42, 70, 1),
w-overcoat = (43, 75, 1),
note-case = (22, 80, 1),
sunglasses = (7, 20, 1),
towel = (18, 12, 2),
socks = (4, 50, 1),
book = (30, 10, 2)
]
V item_keys = items.keys()
[(Int, Int) = (Int, [(Int, String)])] cache
F choose_item(weight, idx)
[(Int, String)] best_list
I idx < 0
R (0, best_list)
V k = (weight, idx)
V? c = :cache.find(k)
I c != N
R c
V name = :item_keys[idx]
V (w, v, qty) = :items[name]
V best_v = 0
L(i) 0..qty
V wlim = weight - i * w
I wlim < 0
L.break
V (val, taken) = choose_item(wlim, idx - 1)
I val + i * v > best_v
best_v = val + i * v
best_list = copy(taken)
best_list.append((i, name))
:cache[k] = (best_v, best_list)
R (best_v, best_list)
V (v, lst) = choose_item(400, items.len - 1)
V w = 0
L(cnt, name) lst
I cnt > 0
print(cnt name)
w += items[name][0] * cnt
print(Total weight: w Value: v)