У меня нет особой необходимости улучшать его, это просто для развлечения. Прямо сейчас это занимает около секунды для списка из примерно 200 тысяч слов.
Я пытался оптимизировать его настолько, насколько мог (используя генераторы вместо генераторов списков). имело большое значение), и у меня закончились идеи.
Есть ли у вас?
#!/usr/bin/env python
# let's cheat at scrabble
def count_letters(word):
count = {}
for letter in word:
if letter not in count: count[letter] = 0
count[letter] += 1
return count
def spellable(word, rack):
word_count = count_letters(word)
rack_count = count_letters(rack)
return all( [word_count[letter] 1 and spellable(word, rack))
for score, word in sorted(scored):
print str(score), '\t', word
Подробнее здесь: https://stackoverflow.com/questions/548 ... ade-faster