7 Stimmen

Wie kann man alle möglichen Wörter mit einer bestimmten Länge herausfinden?

Ich versuche, einen Algorithmus in C# zu erstellen, der die folgenden Ausgabestrings erzeugt:

AAAA
AAAB
AAAC
...and so on...
ZZZX
ZZZY
ZZZZ

Wie lässt sich dies am besten bewerkstelligen?

public static IEnumerable<string> GetWords()
{
    //Perform algorithm
    yield return word;
}

0 Stimmen

Was wollen Sie damit erreichen? Je nach Ihrer Antwort ist es vielleicht besser, die Liste auf die Schnelle zu erstellen.

0 Stimmen

@John der Statistiker: Iterator-Blöcke verwenden tut die Liste nach und nach erstellen.

0 Stimmen

Dies kann bei der Erstellung einer naiven Brute-Force-Logik nützlich sein. Ich habe einmal etwas Ähnliches für einen Kurs gemacht, in dem wir eine Chiffre knacken mussten. Die analytische Technik war einfach, also habe ich auch ein Programm geschrieben, das an einem frühen Samstagmorgen das gesamte Computerlabor der Hochschule für ein paar Stunden in Anspruch nahm :)

0voto

Thomas Hansen Punkte 5473

Verwenden Sie etwas, das automatisch nach jeder einzelnen Buchstabenkombination googelt, und sehen Sie dann nach, ob es bei den ersten fünf Ergebnissen mehr ".sz"- oder ".af"-Treffer als ".com"-Treffer gibt ... ;)

Im Ernst, was Sie suchen, könnte Tries (Datenstruktur) sein, obwohl Sie immer noch brauchen, um bevölkern. die Sache, die wahrscheinlich viel schwieriger ist...

0voto

Mohammed Kaif Punkte 1

Ein sehr einfacher aber genialer Code, der alle Wörter mit 3 und 4 Buchstaben der englischen Sprache generiert

#include <iostream>
using namespace std;
char alpha[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}
int main() {
int num;
cin >> num;
if (num == 3) { //all 3 letter words
    for (int i = 0; i <= 25; i++) {
        for (int o = 0; o <= 25; o++) {
            for (int p = 0; p <= 25; p++) {
                cout << alpha[i] << alpha[o] << alpha[p] << " ";
            }
        }
    }
}
else if (num == 4) { //all 4 letter words
    for (int i = 0; i <= 25; i++) {
        for (int o = 0; o <= 25; o++) {
            for (int p = 0; p <= 25; p++) {
                for (int q = 0; q <= 25; q++) {
                    cout << alpha[i] << alpha[o] << alpha[p] << alpha[q] << " ";
                }
            }
        }
    }
}
else {
    cout << "Not more than 4"; //it will take more than 2 hours for generating all 5 letter words
  }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X