Autor Beitrag
jul14n
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

Win Xp
D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 31.05.05 18:45 
Du benötigst ein Programm, das sog. 'Permutationen' erstellt.
ausblenden volle Höhe 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:
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
  { P(N,N) >>  R=Slen  }
  if Length(B) = SLen - R then
  begin
    Write(' {' + A + '} '); {Per++}
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

Win Xp
D7
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 31.05.05 19:48 
Ist doch klar: Das Programm erzeugt Syntaxfehler und totale Konfusion... :oops:
Ich habe geschlampt, sorry:
ausblenden volle Höhe 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:
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 + '} '); {Per++}
    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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20

Win Xp
D7
BeitragVerfasst: Mi 01.06.05 14:35 
:D ok, thx very much
julian
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Mi 01.06.05 19:58 
Nur so, aus Spass: Dieser Algorithmus verwendet Graycodes, um iterativ alle Permutationen eines beliebigen Strings zu erzeugen:
ausblenden 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;