Path: utzoo!attcan!sobeco!onfcanim!zap!matrox!IRO.UMontreal.CA!bonnie.concordia.ca!thunder.mcrcim.mcgill.edu!snorkelwacker.mit.edu!usc!wuarchive!udel!haven!adm!news From: PHARMAIL%RUG.NL@uga.cc.uga.edu Newsgroups: comp.lang.pascal Subject: RE: Anagram Message-ID: <25420@adm.brl.mil> Date: 8 Jan 91 13:42:59 GMT Sender: news@adm.brl.mil Lines: 54 { Hi netlanders, some time ago, while studying recursion, I made the following program in Turbo Pascal. Recursion is great! I think it produces anagrams. What kind of magazine is _SPY_? Never heard of it. Please let me know. Greetings, Paul } program anagram; { recursive calculation of permutations Author: Paul B. van den Berg - PHARMAIL@rc.rug.nl } const maxL = 8; type charray = string[maxL]; var st: charray; count: longint; n: integer; ch: char; procedure permutate(x: integer; var st: charray); var i, j: integer; st2: charray; begin if x=1 then begin inc(count); write(' ',st) end else begin dec(x); j:=n-x; if x=2 then writeln; permutate(x,st); for i:=j+1 to n do begin st2:=st; ch:=st2[j]; st2[j]:=st[i]; st2[i]:=ch; permutate(x,st2) end end end; begin writeln(' RECURSIVE CALCULATION of PERMUTATIONS '); writeln; write('Input some string (max ',maxL,' letters): '); readln(st); count:=0; n:=length(st); permutate(n,st); writeln; writeln(count,' permutations'); end.