Ich versuche, ein Boggle-Spiel in Java zu machen, und für mein Programm, sobald ich das Board randomize Ich habe eine Methode, die durch die möglichen Kombinationen iteriert und vergleicht jedes mit einem Wörterbuchliste, um zu überprüfen, ob es ein gültiges Wort ist, und wenn ja, lege ich es in den Schlüssel. Es funktioniert gut, jedoch benötigt das Programm drei oder vier Minuten, um den Schlüssel zu generieren, was hauptsächlich auf die Größe des Wörterbuchs zurückzuführen ist. Der, den ich benutze, hat ungefähr 19.000 Wörter und der Vergleich jeder Kombination dauert eine Menge Zeit. Hier ist der Teil des Codes Ich versuche, schneller zu machen:Iterate durch nur einen Teil einer großen Liste in Java
if (str.length()>3&&!key.contains(str)&&prefixes.contains(str.substring(0,3))&&dictionary.contains(str)){
key.add(str);
}
wo str
wird die Kombination erzeugt. prefixes
ist eine Liste, die ich auf dictionary
erzeugt basiert, das so geht:
public void buildPrefixes(){
for (String word:dictionary){
if(!prefixes.contains(word.substring(0,3))){
prefixes.add(word.substring(0,3));
}
}
}
, die alle drei Buchstaben-Präfixen im Wörterbuch kommt noch hinzu, wie „abb“ und „mar“, so dass, wenn str
ist jibberish wie „xskfjh "Es wird nicht gegen das ganze Wörterbuch geprüft, nur prefixes
was so etwas wie 1k Worte ist.
Was ich versuche nur eine Näherung durch Iteration durch die Wörter im Wörterbuch auf Zeit abgeholzt zu tun ist, die den gleichen Anfangsbuchstaben wie str
haben, also wenn str
ist „Abtei“ dann wird es nur str
gegen Worte Sie sicher, dass Beginnen Sie mit "a" anstatt der ganzen Liste, was die Zeit erheblich verkürzen würde. Oder noch besser, es prüft nur str
gegen Wörter, die das gleiche Präfix haben. Ich bin ziemlich neu in Java, also würde ich wirklich schätzen, wenn Sie in Ihren Antworten sehr beschreibend sind, danke!
Sieht so aus, als könnten Sie eine Karte> oder etwas in dieser Richtung verwenden. Dies teilt Ihre Suche in 26 Stücke und beschleunigt die Suche etwas. Aber was Sie wahrscheinlich suchen, ist eine Möglichkeit, effizient ein Diagramm zu erstellen und zu durchsuchen. –
Gefunden beim googeln ... http://www.wutka.com/dawg.html Interessante Sachen –
Sie versuchen, ein Trie neu zu erfinden – AdamSkywalker