Date: Sun, 14 Dec 2003 21:26:34 -0500
Reply-To: Sigurd Hermansen <HERMANS1@WESTAT.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Sigurd Hermansen <HERMANS1@WESTAT.COM>
Subject: Re: Permutation problem
Content-Type: text/plain; charset="iso-8859-1"
Lars:
Merry %permute(%str(D),%str(G),%str(J),%str(L),%str(O),%str(U),__n=194)
Sig
%macro permute(__x1,__x2,__x3,__x4,__x5,__x6,__n=);
/* Create data*/
data d;
do x="&__x1","&__x2","&__x3","&__x4","&__x5","&__x6";
output;
end;
run;
proc sql;
create table permute as
select d1.x||d2.x||d3.x||d4.x||d5.x||d6.x as permute
from d as d1,d as d2,d as d3,d as d4,d as d5,d as d6
where index(calculated permute,"&__x1")
and index(calculated permute,"&__x2")
and index(calculated permute,"&__x3")
and index(calculated permute,"&__x4")
and index(calculated permute,"&__x5")
and index(calculated permute,"&__x6")
order by permute
;
select monotonic() as n,* from permute where calculated n=&__n
;
quit;
%mend permute;
%permute(%str(D),%str(G),%str(J),%str(L),%str(O),%str(U),__n=194)
-----Original Message-----
From: LWn
To: SAS-L@LISTSERV.UGA.EDU
Sent: 12/14/2003 3:51 PM
Subject: Permutation problem
This week every year I use to present a small permutation problem in
two steps to my students.
i) How many possible sixletter "words" can be made using
the letters DGJLOU? No problem, the answer usually comes
within ten seconds.
ii) OK, now I want you to arrange all those 720 "words"
alphabetically. What "word" is number 194?
1: DGJLOU
2: DGJLUO
.
194: ??????
.
720: UOLJGD
If the students are familiar with SAS or some other programming
tool I ask them to try using their computers. Here is my SAS solution.
Does anybody have a more elegant solution with SAS or SPSS?
data dgjlou (keep=word) ;
length i j k l m n $ 1. ;
do i='D', 'G', 'J', 'L', 'O', 'U' ;
do j='D', 'G', 'J', 'L', 'O', 'U' ;
do k='D', 'G', 'J', 'L', 'O', 'U' ;
do l='D', 'G', 'J', 'L', 'O', 'U' ;
do m='D', 'G', 'J', 'L', 'O', 'U' ;
do n='D', 'G', 'J', 'L', 'O', 'U' ;
word = i||j||k||l||m||n ;
xx = (i=j)+(i=k)+(i=l)+(i=m)+(i=n)
+(j=k)+(j=l)+(j=m)+(j=n)+(k=l)
+(k=m)+(k=n)+(l=m)+(l=n)+(m=n) ;
xx = 0 then output ;
end ;
end ;
end ;
end ;
end ;
end ;
run ;
------------------------------
No 194 is GOD JUL which is Swedish for Merry Xmas!
/Lars Wahlgren
Lund university, Sweden
|