Thema: Delphi Zufallswörter

Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#13

Re: Zufallswörter

  Alt 21. Nov 2005, 20:11
So gehts:
Delphi-Quellcode:
Function NthPermutation (const aString : AnsiString; aCount : Integer) : AnsiString;
Var
  pos, i, n : Cardinal;
  chTemp : char;
Begin
  n := Length(aString);
  result := aString;

  for i := n downto 2 do
    begin
    pos := acount mod i +1;
    //switch
    chTemp := result[i];
    result[i] := result[Pos];
    result[Pos] := chTemp;

    acount := acount div i;
    End;
End;

Procedure TForm1.Button1Click (Sender : TObject);
Const
  sLetters = 'URLTKADPE';
  f : Integer;
Begin
  f := 1;
  For i:=2 To Length (sLetters) do f:=f*i;
  For i:=1 to f-1 do memo1.lines.add (NthPermutation (sLetters,i));
End;
Optimal ist es nicht, da die Funktion 'NthPermutation' die N.te Permutation einer Zeichenkette liefert und jedesmal von vorne anfängt, zu mischen. Aber egal.

omata's version verwendet Rekursion, die hier mischt den String jedesmal nach einem festgelegten Muster.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat