Anagrams.p
Make Anagrams Recursively. Sources in Pascal programming language. (C) 1989 - Stefano Caschi
program anagram (input,output);
type parola=string[80];
var l:integer;
chars:parola;
procedure ricursive (n:integer;var stringa:parola);
var newstringa:parola;
x,c:integer;
begin
if n<l then begin
for c:= 1 to l-n+1 do begin
for x:= 0 to n-1 do newstringa[x]:=stringa[x]; {*********}
for x:= n to l-1 do newstringa[x]:=stringa[x+1];{* SHIFT *}
newstringa[l]:=stringa[n]; {*********}
ricursive(n+1,newstringa);
stringa:=newstringa;
end
end
else writeln(stringa)
end;
begin {main}
write ('Inserisci parola: ');
read (chars);
l:=length(chars);
ricursive(1,chars)
end.