75 lines
1.5 KiB
Plaintext
75 lines
1.5 KiB
Plaintext
(knapsack=
|
|
( things
|
|
= (map.9.150.1)
|
|
(compass.13.35.1)
|
|
(water.153.200.2)
|
|
(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)
|
|
)
|
|
& 0:?maxvalue
|
|
& :?sack
|
|
& ( add
|
|
= cumwght
|
|
cumvalue
|
|
cumsack
|
|
name
|
|
wght
|
|
val
|
|
pcs
|
|
tings
|
|
n
|
|
ncumwght
|
|
ncumvalue
|
|
. !arg
|
|
: ( ?cumwght
|
|
. ?cumvalue
|
|
. ?cumsack
|
|
. (?name.?wght.?val.?pcs) ?tings
|
|
)
|
|
& -1:?n
|
|
& whl
|
|
' ( 1+!n:~>!pcs:?n
|
|
& !cumwght+!n*!wght:~>400:?ncumwght
|
|
& !cumvalue+!n*!val:?ncumvalue
|
|
& ( !tings:
|
|
& ( !ncumvalue:>!maxvalue:?maxvalue
|
|
& !cumsack
|
|
( !n:0&
|
|
| (!n.!name)
|
|
)
|
|
: ?sack
|
|
|
|
|
)
|
|
| add
|
|
$ ( !ncumwght
|
|
. !ncumvalue
|
|
. !cumsack
|
|
(!n:0&|(!n.!name))
|
|
. !tings
|
|
)
|
|
)
|
|
)
|
|
)
|
|
& add$(0.0..!things)
|
|
& out$(!maxvalue.!sack)
|
|
);
|
|
|
|
!knapsack;
|