26-08-2012, 01:53 PM
السلام عليكم
هدا أحد الحلول
من دون حلقات ودوران
باستعمال loop
هدا أحد الحلول
من دون حلقات ودوران
كود :
function Rev(N: string): string;
var
SL: TStringList;
begin
if Length(N) = 4 then
begin
Result := '';
SL := TStringList.Create;
try
{1}
SL.Add(N[1] + N[2] + N[3] + N[4]);
SL.Add(N[1] + N[2] + N[4] + N[3]);
SL.Add(N[1] + N[3] + N[2] + N[4]);
SL.Add(N[1] + N[3] + N[4] + N[2]);
SL.Add(N[1] + N[4] + N[3] + N[2]);
SL.Add(N[1] + N[4] + N[2] + N[3]);
{2}
SL.Add(N[2] + N[1] + N[3] + N[4]);
SL.Add(N[2] + N[1] + N[4] + N[3]);
SL.Add(N[2] + N[3] + N[4] + N[1]);
SL.Add(N[2] + N[3] + N[1] + N[4]);
SL.Add(N[2] + N[4] + N[3] + N[1]);
SL.Add(N[2] + N[4] + N[1] + N[3]);
{3}
SL.Add(N[3] + N[1] + N[4] + N[2]);
SL.Add(N[3] + N[1] + N[2] + N[4]);
SL.Add(N[3] + N[2] + N[1] + N[4]);
SL.Add(N[3] + N[2] + N[4] + N[1]);
SL.Add(N[3] + N[4] + N[2] + N[1]);
SL.Add(N[3] + N[4] + N[1] + N[2]);
{4}
SL.Add(N[4] + N[1] + N[3] + N[2]);
SL.Add(N[4] + N[1] + N[2] + N[3]);
SL.Add(N[4] + N[2] + N[1] + N[3]);
SL.Add(N[4] + N[2] + N[3] + N[1]);
SL.Add(N[4] + N[3] + N[2] + N[1]);
SL.Add(N[4] + N[3] + N[1] + N[2]);
Result := SL.Text;
finally
SL.Free;
end;
end;
end;باستعمال loop
كود :
function Rev(N: string): string;
var
SL: TStringList;
i, b, c, d: Integer;
begin
if Length(N) = 4 then
begin
Result := '';
b := 2; c := 3; d := 4;
SL := TStringList.Create;
try
for i := 1 to Length(N) do
begin
if i = 2 then b := 1 else if i = 3 then c := 2 else if i = 4 then d := 3;
SL.Add(N[i] + N[b] + N[c] + N[d]);
SL.Add(N[i] + N[b] + N[d] + N[c]);
SL.Add(N[i] + N[c] + N[b] + N[d]);
SL.Add(N[i] + N[c] + N[d] + N[b]);
SL.Add(N[i] + N[d] + N[c] + N[b]);
SL.Add(N[i] + N[d] + N[b] + N[c]);
end;
Result := SL.Text;
finally
SL.Free;
end;
end;
end;
سبحان الله وبحمده سبحان الله العظيم

