Hallo, eine zweite Frage hätt\' ich da noch:
Gibt es ein Prog., daß mir Wörter editiert, und zwar in der Art, daß auf Grundlage eines vorgegebenen Namens Variationen bez. GROßER und kleiner Buchstaben herausgegeben werden?
Beispiel:
Folge AA aa Aa aA
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
Hallo Borlander!
So ein Problem gibt mir ja wieder keine Ruhe, obwohl ich genug andere Sachen zu tun hätte ...
Also, ich habe eine Menge Hirnschmalz verwendet, für mich war es offen gestanden gar nicht so einfach, wie es aussah, zumindest wenn man nicht gleich eine mathematische Formel zur Hand hat oder Bill oder Linus heißt.
Strategie 1 - Zuerst habe ich die Großbuchstaben durch das Wort laufen lassen nach dem Muster (Ausgangswort "auto"):
auto, Auto, aUto, auTo, autO, AUto, AuTo, AutO, AUTo, AUtO, AuTO, aUTO, AUTO
Dabei blieben aber einige Kombinationen unberücksichtigt, bspw. aUTo!
Strategie 2 - Die Sortieralgorithmen arbeiten viel mit benachbarten Elementen, die ausgetauscht werden, so könnten immer benachbarte Kleinbuchstaben durch Großbuchstaben ersetzt werden (Ausgangswort "auto"):
auto, Auto, aUto, auTo, autO, AUto, AuTo, AutO, aUtO, auTO, AUTo, AUtO, AuTO, aUTO, AUTO
Dabei wird die Kombination von Großbuchstaben nicht berücksichtigt, die in der Mitte des Wortes nebeneinander liegen: aUTo!
Strategie 3 - Groß- und Kleinschreibung kann doch als Schalter zwischen zwei Möglichkeiten betrachtet werden. Also müsste das Ganze vielleicht im Binärsystem zu lösen zu sein und tatsächlich: Wenn ich die Anzahl der Kombinationsmöglichkeiten binär hochzähle und die Binärzahlen als 0/1- bzw. Klein-/Großbuchstabenraster verwende, komme ich auf alle Kombinationen. Allerdings ist die Zahl der möglichen Kombinationen nicht gleich n^2 !
Peter III. habe ich ein VBScript gepostet (siehe oben im Thread), dass nach diesem System funktioniert. Ist etwas umfangreicher geworden, weil eine Umwandlung von Dezimalzahlen in Binärzahlen erfolgen muss, die dann in einen String ausgegeben und als "Raster" ausgelesen werden.
Vielleicht gibt es elegantere Methoden, aber immerhin, es funzt!!! Für eine "einfache" rekursive Funktion habe ich keinen Ansatz gefunden.
MfG
UselessUser