RosettaCodeData/Task/Permutations/SAS/permutations.sas

43 lines
551 B
SAS
Raw Permalink Normal View History

2013-04-10 23:57:08 -07:00
/* Store permutations in a SAS dataset. Translation of Fortran 77 */
data perm;
2015-02-20 00:35:01 -05:00
n=6;
array a{6} p1-p6;
do i=1 to n;
a(i)=i;
end;
2013-04-10 23:57:08 -07:00
L1:
2015-02-20 00:35:01 -05:00
output;
link L2;
if next then goto L1;
stop;
2013-04-10 23:57:08 -07:00
L2:
2015-02-20 00:35:01 -05:00
next=0;
i=n-1;
2013-04-10 23:57:08 -07:00
L10:
2015-02-20 00:35:01 -05:00
if a(i)<a(i+1) then goto L20;
i=i-1;
if i=0 then goto L20;
goto L10;
L20:
j=i+1;
k=n;
2013-04-10 23:57:08 -07:00
L30:
2015-02-20 00:35:01 -05:00
t=a(j);
a(j)=a(k);
a(k)=t;
j=j+1;
k=k-1;
if j<k then goto L30;
j=i;
if j=0 then return;
2013-04-10 23:57:08 -07:00
L40:
2015-02-20 00:35:01 -05:00
j=j+1;
if a(j)<a(i) then goto L40;
t=a(i);
a(i)=a(j);
a(j)=t;
next=1;
return;
keep p1-p6;
2013-04-10 23:57:08 -07:00
run;