Autor Beitrag
eisi_eis
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 25.04.06 00:43 
Hallo leute, ich habe ein Problem. ich brauche ein Programm in welchem ich einen Namen eingeben kann und delphi mir sagt, wieviele zeichen das wort hat und mittels der permutation (fakultät) mir die varianten anzeigt. soweit sogut, ein grundgerüst habe ich schon, mir fällt nur noch eine erkennung von doppelten buchstaben. Zum Beispiel: Julius hat 6 Buchstaben, jedoch ist das "u" doppelt, daher braucht man nur 5 buchstaben zu vermischen. das heißt 5!=120 varianten. doch wie bringe ich das ganze delphi bei?

mein grundgerüst:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var kette:string;
    laenge, i, anzahl:integer;
begin

kette:=edit1.Text;
laenge:=length(kette);
edit2.Text:=IntTostr(laenge);

anzahl:=1;

for i:=1 to laenge do

anzahl:=anzahl*i;

edit3.Text:=inttostr(anzahl);
end;


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Di 25.04.06 06:43 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
function CharSingleCount (const AText: String): Integer;
var
  I,J,L: Integer;
  B: Boolean;
begin
  L := Length(AText);
  if L>1 then
    begin
      Result := 0;
      for I := 1 to L do
      begin
        B := True;
        if I>1 then
          for J := 1 to I-1 do
            if AText[I]=AText[J] then B := False;
        if B the Inc (Result);
      end;    
    end
  else Result := L;
end;


ungetestet :!:

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Di 25.04.06 07:34 
Hallo,

eine kleine Anmerkung
Zitat:

Julius hat 6 Buchstaben, jedoch ist das "u" doppelt, daher braucht man nur 5 buchstaben zu vermischen. das heißt 5!=120 varianten. doch wie bringe ich das ganze delphi bei?

'Julius' hat mehr als 120 Moeglichkeiten.
aab mischen sind (ein a zum Unterscheiden A)
ab und ba (die zwei (2!) Moeglichkeiten)verknuepft mit A, welches dann wieder zu a wird.
Aab,aAb,abA-> aab und aba
Aba,bAa,baA->aba und baa
zusammen -> aab,aba,baa
Sind also 3 (= 3!/2!)Moeglichkeiten statt 6= 3!.
Bei 'Julius' sind es dann statt 6! nur 6!/2! 360 statt 5!= 120 Moeglichkeiten, das ist schon das dreifache.

Es wird durch die Anzahl der Moeglichkeiten des m-fachen Zeichen geteilt.
n= GesamtAnzahl der Zeichen,
m= Vielfachheit eines Zeichens (bei Julius 'u'= 2-fach)(nicht unterscheidbar ob a(1) oder a(2) ,..a(m) wo steht )
Moeglichkeiten = n!/m!

Gruss Horst
P.S.:
Jetzt fehlt nur ein Verfahren diese auch leicht zu erzeugen.
Sirke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 208
Erhaltene Danke: 2



BeitragVerfasst: Di 25.04.06 09:28 
Horst hat recht. Die Formel zum Berechnen der Möglichkeiten lautet:
ausblenden Quelltext
1:
2:
3:
( H(a) + H(b) + ... + H(y) + H(z) )!
------------------------------------
H(a)! * H(b)! * ... * H(y)! * H(z)!
H(a) ist dabei die Absolute Haufigkeit von dem Buchstaben a.

Vereinfachen kann man das leider nicht, weil in Zähler ein Produkt (Fakultät) von Bespielsweise 10 Zahlen steht, also 1*2*...*9*10 und im Nenner ein Produkt von kleineren Fakultäten, also 1*2 * 1*2 * 1*2*3 * 1*2*3. Kürzen ist zwar in diesem Fall möglich, doch sind andere Kombinatinen Denkbar, die solche Versuche undenkbar machen!

Bruttosozialprodukt hat somit 19!/(2!*2!*3!*3!) Möglichkeiten (Die Buchstaben des Nenners sind Fett gedruckt). Das sind ca. 10^14 Möglichkeiten. Daher benötigst du auf jeden Fall eine Unit für große Buchstaben, da du mit Int64 maximal Wörter mit 20 Buchstaben (ohne doppelte) errechnen kannst: log(20!)/log(2)~63,..

mfg Sirke
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Di 25.04.06 09:37 
user profile iconSirke hat folgendes geschrieben:
Horst hat recht. ...

Aber nur, wenn man Wiederholungen zuläßt. Wenn user profile iconeisi_eis so haben möchte, dann muss er julis kombinieren und dann sind es 5!=120 Möglichkeiten

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Di 25.04.06 10:31 
Hallo,

ich ging davon aus:
Zitat:
>Julius hat 6 Buchstaben, jedoch ist das "u" doppelt, daher braucht man nur 5 buchstaben zu vermischen.

und >daher braucht man nur 5 buchstaben zu vermischen.< eben nicht richtig ist.
Aber das wird eisi_eis schon selbst wissen.

Gruss Horst
eisi_eis Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 25.04.06 23:39 
hey danke, ich habs mir mal so einfach wie möglich gemacht und wollte nur das programm ohne wiederholung benutzen. danke für antworten, hab da gleich noch ne frage stell das aber in nen neuen thread...


der eisi_eis
eisi_eis Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 26.04.06 20:13 
kann das sein, das der quelltext von kroko nur auf den namen julius bezogen ist? gibts dafür auch noch ne allgemeine form?
Kroko
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1284

W98 W2k WXP
Turbo D
BeitragVerfasst: Do 27.04.06 06:21 
user profile iconeisi_eis hat folgendes geschrieben:
kann das sein, das der quelltext von kroko nur auf den namen julius bezogen ist? gibts dafür auch noch ne allgemeine form?

Das ist eine allgemeine Form, die allerdings Groß- und Kleinschreiben beachtet, d.h. a und A sind zwei Zeichen!

_________________
Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!