Re: CaseCorrection d. Permutataion / BruteForce d. 2. Dimens
29. Jun 2007, 22:26
Hallo Harry,
die Idee hinter meinem Code ist einfach: Ein Wort mit n Buchstaben kann ordnungserhaltend (Position der Zeichen darf nicht verändert werden) auf zwei (Zahl der Freiheitsgrade, Upper- oder Lowercase) hoch n (Zahl der Buchstaben) verschiedene Arten geschrieben werden. Wenn ich die Buchstabenpositionen als die Stellen einer Dualzahl betrachte und festlege, dass für jedes 1-Bit ein Großbuchstabe und für jedes 0-Bit ein Kleinbuchstabe gesetzt wird, dann sollte mein Code aus Beitrag #4 verständlich sein. Die Prozedur hat einen String als Eingabeparameter und eine StringList als Ausgabeparameter. Für den Fall, dass die StringList Teil einer visuellen Komponente ist, wird noch die Aktualisierung während der Schleifendurchläufe unterdrückt.
Für Wörter mit Zeichen, deren Schreibweise nicht variiert, sind genau zwei Änderungen nötig gewesen: Die Bestimmung von n ist nicht mehr einfach die Länge des Wortes - Zeichen mit invarianter Schreibweise dürfen nicht mitgezählt werden. Deshalb die Längenberechnung zu Beginn des Codes in Beitrag #8. In der Schleife müssen genau die invarianten Zeichen übersprungen werden, deshalb der berechnete Index (i + skip).
Gute Nacht
|