Alle möglichen Wörter

8

Ich möchte alle möglichen 5-Buchstaben-Wörter mit a-z erstellen. Bitte schlagen Sie alle guten und schnellen Algorithmen vor.

Ich habe versucht, eine zu erstellen, und es sieht ungefähr so ​​aus ...

%Vor%     
AutoMEta 31.03.2011, 17:41
quelle

4 Antworten

20

Hier ist ein Beispiel für das Erzeugen aller Sequenzen für beliebige Zeichen in beliebiger Länge:

%Vor%

Dies dauert ungefähr 250 ms auf meinem Rechner, um alle 11.881.376 Sequenzen zu durchlaufen.

Beachten Sie, dass ein neues char[len] nur einmal am Anfang erstellt und als Build zum Erstellen der Permutationen wiederverwendet wird. Der erste Aufruf von iterate() beginnt mit einem pos von 0 . Springen Sie zu der for-Schleife, wo sie sich durch die einzelnen Zeichen bewegt. Der erste Char des Builds wird auf diesen Wert gesetzt, und dann rufen wir rekursiv dieselbe Methode auf, um den nächsten auf pos + 1 zu setzen. Sobald dies 5 Mal passiert ist, wird die Position bei len sein. Dies ist der Fall, wenn pos == len am Anfang der Methode eintritt. Dann baut es nur ein String von dem auf, was im Build aufgebaut ist und da ist dein Wort.

    
WhiteFang34 31.03.2011, 18:41
quelle
3

Dies kann auch ohne Rekursion (hier in C) einfach gemacht werden.

%Vor%

oder Sie können es mit tragen:

%Vor%     
Antti Huima 01.04.2011 22:50
quelle
2
%Vor%

Hier ist die Java 7-Version von antti.huimas Code.

    
David M. Coe 25.07.2012 00:12
quelle
0

Hier ist ein Algorithmus, den Sie im Pseudocode ausprobieren können:

%Vor%

Sie sollten in der Lage sein, diesen Pseudocode einfach in den richtigen Java-Code zu übersetzen. Das einzige knifflige Bit ist die zufällige Zeichenfolge zu generieren. Du könntest dein Array von Buchstaben nehmen, einen zufälligen Wert zwischen 1 und 26 wählen und dann diesen für einen Buchstaben verwenden. Wiederholen Sie das fünf Mal, und Sie haben eine Zeichenfolge mit fünf Buchstaben!

Ob dies ein "guter" oder "schneller" Algorithmus ist, bleibt Ihnen überlassen. Sie haben nicht definiert, was "gut" oder "schnell" bedeutet, also kann ich nicht beurteilen. Sie haben möglicherweise andere Kriterien als ich.

Beachten Sie, dass dadurch alle Zeichenfolgen generiert werden, die fünf Buchstaben enthalten. Das werden wahrscheinlich keine Worte sein. Ausgehend von Ihrem Beispielcode möchten Sie alle Zeichenfolgen, die fünf Buchstaben enthalten, nicht Wörter mit fünf Buchstaben.

    
CanSpice 31.03.2011 17:58
quelle

Tags und Links