Java bir Boggle oyunu yapmaya çalışıyorum, ben tahta rastgele bir kez benim program için bir her biri karşılaştırır olası kombinasyonların arasında dolaşır ve bir yöntemi var Geçerli bir kelime olup olmadığını kontrol etmek için sözlük listesi ve eğer evet ise, anahtarın içine koydum. Bu, gayet iyi çalışıyor ancak programı nedeniyle sözlüğe büyüklüğüne çoğunlukla anahtarı oluşturmak için üç ya da dört dakika sürer. Kullandığımın 19k kelimesi var ve her kombinasyonu karşılaştırmak bir ton sürüyor.Bıkmadan
if (str.length()>3&&!key.contains(str)&&prefixes.contains(str.substring(0,3))&&dictionary.contains(str)){
key.add(str);
}
str
kombinasyonu oluşturulur: İşte daha hızlı yapmaya çalışıyorum kod parçası. prefixes
böyle gider ben dictionary
göre oluşturulan bir listesi: böyle "abb" ve "mar" olarak sözlükte her üç harfli önekler ekleyen
public void buildPrefixes(){
for (String word:dictionary){
if(!prefixes.contains(word.substring(0,3))){
prefixes.add(word.substring(0,3));
}
}
}
böylece str
alay etmeleri "xskfjh gibi olduğunda "bu bütün sözlüğe göre kontrol almazsınız, sadece prefixes
1k kelimeler gibi şeydir. str
aynı ilk mektup sözlükte sadece kelimelerin yineleme tarafından zaman azaltmak, böylece str
ise "Manastır" ise, yalnızca kelimelerin karşı str
kontrol edecek ne yapmaya çalışıyorum
o Tüm listenin yerine "a" ile başlayın, bu da önemli ölçüde azalır. Hatta daha da iyisi, sadece aynı öneki olan kelimeler karşı str
denetler. Java için oldukça yeni biriyim, bu yüzden cevaplarınızda çok açıklayıcıysanız gerçekten çok memnun olurum, teşekkürler! comments söylemeye çalıştığımız şey
Bir Harita> ya da bu satırlarda bir şeyler kullanmak isteyebileceğinizi düşünüyor. Bu, aramanızı 26 parçaya böler ve biraz arama yapmayı hızlandıracaktır. Ama muhtemelen aradığınız şey verimli bir grafik oluşturmak ve aramak için bir yoldur. –
Bunu googling yaparken bulabilirsiniz ... http://www.wutka.com/dawg.html İlginç şeyler –
Bir Trie icat etmeye çalışıyorsunuz – AdamSkywalker