allora mi voglio divertire anch'io,
eccone un'altra, sempre ricorsiva
codice:
program permuta;
{
Questo programma stampa ricorsivamente tutte le permutazione di una stringa di caratteri.
Compilare con fpc permuta
}
uses
crt;
var
str : string;
procedure permu (c, str : string);
var
i, len : integer;
c1 : char;
begin
len := Length(str);
case len of
0, 1 : WriteLn(str);
2 : begin
WriteLn(c + str[1] + str[2]);
WriteLn(c + str[2] + str[1]);
end;
else
for i := 1 to len do
begin
// swap dei caratteri
c1 := str[i];
str[i] := str[1];
str[1] := c1;
permu(c + c1, Copy(str, 2, len - 1));
end;
end;
end;
begin
WriteLn('Introduci la stringa da permutare :');
ReadLn(str);
WriteLn('***');
permu('', str);
WriteLn('***');
WriteLn('');
WriteLn('Grazie per aver usato questo programma.');
WriteLn('');
end.
ciao
sergio