25 lines
737 B
Plaintext
25 lines
737 B
Plaintext
(de *Items
|
|
("panacea" 3 25 3000)
|
|
("ichor" 2 15 1800)
|
|
("gold" 20 2 2500) )
|
|
|
|
(de knapsack (Lst W V)
|
|
(when Lst
|
|
(let X (knapsack (cdr Lst) W V)
|
|
(if (and (ge0 (dec 'W (cadar Lst))) (ge0 (dec 'V (caddar Lst))))
|
|
(maxi
|
|
'((L) (sum cadddr L))
|
|
(list
|
|
X
|
|
(cons (car Lst) (knapsack (cdr Lst) W V))
|
|
(cons (car Lst) (knapsack Lst W V)) ) )
|
|
X ) ) ) )
|
|
|
|
(let K (knapsack *Items 250 250)
|
|
(for (L K L)
|
|
(let (N 1 X)
|
|
(while (= (setq X (pop 'L)) (car L))
|
|
(inc 'N) )
|
|
(apply tab X (4 2 8 5 5 7) N "x") ) )
|
|
(tab (14 5 5 7) NIL (sum cadr K) (sum caddr K) (sum cadddr K)) )
|