Maximum triangle path sum: Difference between revisions

add PL/I translated from REXX
(add PL/I translated from REXX)
Line 785:
I ) ) )
(car R) ) )</lang>
 
=={{header|PL/I}}==
{{trans|REXX}}
<lang pli>*process source xref attributes or(!);
triang: Proc Options(Main);
Dcl nn(18,18) Bin Fixed(31);
Dcl (rows,i,j) Bin Fixed(31);
Dcl (p,k,kn) Bin Fixed(31);
Call f_r(1 ,' 55 ');
Call f_r(2 ,' 94 48 ');
Call f_r(3 ,' 95 30 96 ');
Call f_r(4 ,' 77 71 26 67 ');
Call f_r(5 ,' 97 13 76 38 45 ');
Call f_r(6 ,' 07 36 79 16 37 68 ');
Call f_r(7 ,' 48 07 09 18 70 26 06 ');
Call f_r(8 ,' 18 72 79 46 59 79 29 90 ');
Call f_r(9 ,' 20 76 87 11 32 07 07 49 18 ');
Call f_r(10,' 27 83 58 35 71 11 25 57 29 85 ');
Call f_r(11,' 14 64 36 96 27 11 58 56 92 18 55 ');
Call f_r(12,' 02 90 03 60 48 49 41 46 33 36 47 23 ');
Call f_r(13,' 92 50 48 02 36 59 42 79 72 20 82 77 42 ');
Call f_r(14,' 56 78 38 80 39 75 02 71 66 66 01 03 55 72 ');
Call f_r(15,' 44 25 67 84 71 67 11 61 40 57 58 89 40 56 36 ');
Call f_r(16,' 85 32 25 85 57 48 84 35 47 62 17 01 01 99 89 52 ');
Call f_r(17,' 06 71 28 75 94 48 37 10 23 51 06 48 53 18 74 98 15 ');
Call f_r(18,' 27 02 92 23 08 71 76 84 15 52 92 63 81 10 44 10 69 93');
rows=hbound(nn,1);
 
do r=rows by -1 to 2;
p=r-1; /*traipse through triangle rows. */
do k=1 to p;
kn=k+1; /*re-calculate the previous row. */
nn(p,k)=max(nn(r,k),nn(r,kn))+nn(p,k); /*replace previous nn */
end;
end;
Put Edit('maximum path sum:',nn(1,1))(Skip,a,f(5)); /*display result*/
f_r: Proc(r,vl);
/* fill row r with r values */
Dcl r Bin Fixed(31);
Dcl vl Char(*);
Dcl vla Char(100) Var;
vla=' '!!trim(vl);
get string(vla) Edit((nn(r,j) Do j=1 To r))(f(3));
End;
End;</lang>
{{out}}
<pre>maximum path sum: 1320</pre>
 
=={{header|Prolog}}==
2,299

edits