buchstabenkombinationen ausgeben ... !?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Alfadur

Betreff: buchstabenkombinationen ausgeben ... !?

BeitragDi, Jul 12, 2005 3:07
Antworten mit Zitat
Benutzer-Profile anzeigen
high leute ...

beispiel :
ab -> ab,ba
abc -> abc,bac,cba,cab,acb,bca

wie krieg ich die buchstabenkombinationen von nem eingegebem wort?
also alle kombinationen die mit den buchstaben die in dem wort vorkommen möglich sind ..

bei ab kommt also nur ab und ba raus, nicht aber aa und bb oder ähnliches ...

weiß es jemand?!
A Cray is the only computer that runs an endless loop in less than four hours.
 

BlackTermi

BeitragDi, Jul 12, 2005 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm, jetzt als theoretische idee, man könnte es doch vllt so machen das man jeden buchstaben als type nimmt und dann mit for next schleifen alle anderen buchstaben durchgeht, und das macht man dann eben auch noch so das der aktuelle an jeder stele auch durchgenommen wird

(hmm, aber wie man das programmieren soll weiss ich auch nicht)
 

hitokiri

BeitragDi, Jul 12, 2005 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Also..... über banks und sehr sehr sehr viel ramverbrauch gehts am schnellsten unrekursiv.

erstmal brauchst ne fakultätsfunktion

n=4
a=1
While n>1
a=a*n*(n-1)
n=n-2
Wend

Print a

zum beispiel

dann erstmal so die buchstaben einlesen


txt$="arsch"

n%=Len(txt$)

bnk1=CreateBank(n)

For t=1 To n
PokeByte bnk1,t-1,Asc(Mid$(txt$,t,1))
Next



For t=1 To n

test$=test$+Chr(PeekByte(bnk1,t-1))

Next

Print test$




so...dann kommt der spassige teil.
Eine bank erstellen mit N!*N byte wobei N gleich die Länge des Strings ist.

von der fakultätsformel wissen wir:
der erste hat N möglichkeiten, der zweite N-1, der dritte N-1 usw...
also schreiben wir (n-1)! mal unseren ersten buchstaben an die erste stelle
und gehen jedesmal N byte weiter.
dann schreiben wir ihn (n-1)! mal an die zweite stelle usw.
dann machen wir weiter mit dem zweiten buchstaben. ihn schreiben wir (n-2)! mal an die zweite stelle. dann (n-2)! mal an die dritte stelle usw...


Am schluss musst du dann eben N! strings mit N länge erstellen und immer N bytes in je einen string auslesen.

Hoffe das war einigermassen verständlich

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group