Knapsack problem/Continuous: Difference between revisions

m
→‎{{header|REXX}}: changed some output glyphs. -- ~~~~
m (→‎{{header|REXX}}: increased height of output window for better scrolling. -- ~~~~)
m (→‎{{header|REXX}}: changed some output glyphs. -- ~~~~)
Line 1,436:
<lang rexx>/*REXX program to solve the burglar's knapsack (continuous) problem. */
@.=''
/*────════ name weight value ────════*/
@.1 = 'flitch 4 30 '
@.2 = 'beef 3.8 36 '
Line 1,463:
do j=2 to items /*sort by desending value/unit wt*/
k=j-1; _n=n.j; _w=w.j; _v=v.j
 
do k=k by -1 to 1 while v.k/w.k < _v/_w
kp1=k+1; n.kp1=n.k; w.kp1=w.k; v.kp1=v.k
end /*k*/
 
kp1=k+1; n.kp1=_n; w.kp1=_w; v.kp1=_v
end /*j*/
Line 1,474 ⟶ 1,472:
call hdr "burgler's knapsack contents"
maxW=15 /*burgler's knapsack max weight. */
 
do j=1 for items while totW < maxW
if totW+w.j<maxW then do
Line 1,494 ⟶ 1,491:
/*──────────────────────────────────one─liner subroutines───────────────*/
hdr: indent=left('',9); call verse arg(1); call title; call sep; return
sep: call sy copies('=',nL), copies("=",wL), copies('=',vL); return
show: call hdr arg(1); do j=1 for items; call syf n.j,w.j,v.j;end; say; return
sy: say indent left(arg(1),nL) right(arg(2),wL) right(arg(3),vL); return
Line 1,502 ⟶ 1,499:
'''output'''
<pre style="height:50ex;overflow:scroll">
 
──────────────────before sorting──────────────────
 
item weight value
═══════════════ ══════ ═══════
=============== ====== =======
flitch 4.00 30.00
beef 3.80 36.00
Line 1,520 ⟶ 1,518:
 
item weight value
═══════════════ ══════ ═══════
=============== ====== =======
salami 3.00 95.00
ham 3.60 90.00
Line 1,535 ⟶ 1,533:
 
item weight value
═══════════════ ══════ ═══════
=============== ====== =======
salami 3.00 95.00
ham 3.60 90.00
Line 1,541 ⟶ 1,539:
greaves 2.40 45.00
welt 3.50 63.38
═══════════════ ══════ ═══════
=============== ====== =======
total weight─── 15.00
total value─── 349.38