Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
50
Task/Knapsack-problem-Bounded/J/knapsack-problem-bounded-1.j
Normal file
50
Task/Knapsack-problem-Bounded/J/knapsack-problem-bounded-1.j
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
'names numbers'=:|:".;._2]0 :0
|
||||
'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
|
||||
)
|
||||
|
||||
'weights values pieces'=:|:numbers
|
||||
decode=: (pieces+1)&#:
|
||||
|
||||
pickBest=:4 :0
|
||||
NB. given a list of options, return the best option(s)
|
||||
n=. decode y
|
||||
weight=. n+/ .*weights
|
||||
value=. (x >: weight) * n+/ .*values
|
||||
(value = >./value)#y
|
||||
)
|
||||
|
||||
bestCombo=:3 :0
|
||||
limit=. */pieces+1
|
||||
i=. 0
|
||||
step=. 1e6
|
||||
best=. ''
|
||||
while.i<limit do.
|
||||
best=. 400 pickBest best,(#~ limit&>)i+i.step
|
||||
i=. i+step
|
||||
end.
|
||||
best
|
||||
)
|
||||
|
||||
bestCombo''
|
||||
978832641
|
||||
18
Task/Knapsack-problem-Bounded/J/knapsack-problem-bounded-2.j
Normal file
18
Task/Knapsack-problem-Bounded/J/knapsack-problem-bounded-2.j
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
decode 978832641
|
||||
1 1 1 0 2 0 3 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0
|
||||
(0<decode 978832641) # (":,.decode 978832641),.' ',.names
|
||||
1 map
|
||||
1 compass
|
||||
1 water
|
||||
2 glucose
|
||||
3 banana
|
||||
1 cheese
|
||||
1 suntan cream
|
||||
1 waterproof overclothes
|
||||
1 note-case
|
||||
1 sunglasses
|
||||
1 socks
|
||||
weights +/ .* decode 978832641
|
||||
396
|
||||
values +/ .* decode 978832641
|
||||
1010
|
||||
27
Task/Knapsack-problem-Bounded/J/knapsack-problem-bounded-3.j
Normal file
27
Task/Knapsack-problem-Bounded/J/knapsack-problem-bounded-3.j
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
dyn=:3 :0
|
||||
m=. 0$~1+400,+/pieces NB. maximum value cache
|
||||
b=. m NB. best choice cache
|
||||
opts=.+/\0,pieces NB. distinct item counts before each piece
|
||||
P=. */\1+0,pieces NB. distinct possibilities before each piece
|
||||
for_w.1+i.400 do.
|
||||
for_j.i.#pieces do.
|
||||
n=. i.1+j{pieces NB. possible counts for this piece
|
||||
W=. n*j{weights NB. how much they weigh
|
||||
s=. w>:W NB. permissible options
|
||||
v=. s*n*j{values NB. consequent values
|
||||
base=. j{opts NB. base index for these options
|
||||
I=. <"1 w,.n+base NB. consequent indices
|
||||
i0=. <w,base NB. status quo index
|
||||
iN=. <"1 (w-s*W),.base NB. predecessor indices
|
||||
M=. >./\(m{~i0)>.v+m{~iN NB. consequent maximum values
|
||||
C=. (n*j{P)+b{~iN NB. unique encoding for each option
|
||||
B=. >./\(b{~i0)>. C * 2 ~:/\ 0,M NB. best options, so far
|
||||
m=. M I} m NB. update with newly computed maxima
|
||||
b=. B I} b NB. same for best choice
|
||||
end.
|
||||
end.
|
||||
|.(1+|.pieces)#:{:{:b
|
||||
)
|
||||
|
||||
dyn''
|
||||
1 1 1 0 2 0 3 0 1 0 1 0 0 0 0 0 1 1 1 0 1 0
|
||||
Loading…
Add table
Add a link
Reference in a new issue