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.