| Autor |
Beitrag |
jul14n
      
Beiträge: 20
Win Xp
D7
|
Verfasst: Di 31.05.05 18:30
hi ihr,
bin grad auf der suche nach einem Programm, dass aus einem Buchstabensalat ein lesbares Wort macht, indem es alle Möglichkeiten auflistet.
z.B.: HLIDEP --> .../ LPIHDE / DELPHI / IELHDP /...
Man gibt den Buchstabensalat in ein Edit ein, klickt auf einen Button und alle Möglichkeiten werden in einer listbox angezeigt.
hat jmd. eine idee, wie man das realisiren könnte?
gruß julian
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Di 31.05.05 18:45
Du benötigst ein Programm, das sog. 'Permutationen' erstellt.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| program Permutation; {$APPTYPE CONSOLE}
uses SysUtils;
var R, Slen: Integer;
procedure P(var A: string; B: string); var J: Word; C, D: string; begin if Length(B) = SLen - R then begin Write(' {' + A + '} '); end else for J := 1 to Length(B) do begin C := B; D := A + C[J]; Delete(C, J, 1); P(D, C); end; end;
begin P('DELPHI',5); end. |
|
|
jul14n 
      
Beiträge: 20
Win Xp
D7
|
Verfasst: Di 31.05.05 18:54
oohh..
ich glaub ich verstehe dein programm nicht ganz, kannst du mir kurz sagen, was es macht?
ich kenn mich noch nicht soo gut aus.
thx
julian
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Di 31.05.05 19:48
Ist doch klar: Das Programm erzeugt Syntaxfehler und totale Konfusion...
Ich habe geschlampt, sorry:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| program Project2; {$APPTYPE CONSOLE}
uses SysUtils;
Procedure P (X : String); Var D : String;
procedure _P(var A: string; B: string); var J: Word; C, D: string; begin if Length(B) = 0 then begin Write(' {' + A + '} '); end else for J := 1 to Length(B) do begin C := B; D := A + C[J]; Delete(C, J, 1); _P(D, C); end; end;
Begin D:=''; _P (D,X); End;
begin P('DELPHI'); end. |
Ich habe es von www.swissdelphicenter.ch und dann kurz modifiziert, ohne es zu testen.
Jetzt gehts: Das Programm erzeugt einfach alle Permutationen eines vorgegebenen Strings.
|
|
jul14n 
      
Beiträge: 20
Win Xp
D7
|
Verfasst: Mi 01.06.05 14:35
 ok, thx very much
julian
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mi 01.06.05 19:58
Nur so, aus Spass: Dieser Algorithmus verwendet Graycodes, um iterativ alle Permutationen eines beliebigen Strings zu erzeugen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26:
| Procedure Permutations (aString : String); Var d : Array Of Integer; g, j, i, n, v : Integer; p,c : String;
Begin n := Length (aString); setlength (d,n+1); d[1] := 1; For i := 2 to n do d[i] := i * d[i-1]; For i := 0 to d[n]-1 do begin c := aString; p := ''; v := i; for j:=n-1 downto 1 do begin g := j - (v div d[j]) + 1; p := p + c[g]; delete (c, g, 1); v := v mod d[j]; End; p := p + c; memo1.lines.Add (p); End; End; |
|
|
|