Python. Какое слово может иметь самые последовательные буквы, которые могут быть удалены, и при этом быть допустимым для словаря?

Я использовал эту отвратительную и неэффективную реализацию, чтобы найти слово, из которого могут быть удалены самые последовательные последние буквы, но при этом оно остается словом.

Родео, например, хорошо известно: Rodeo, Rode, Rod, Ro. Программа нашла "композиторов": Composers, Composer, Compose, Compos, Comp

Мне было интересно как мне подойти к созданию программы, которая находит самое длинное слово, из которого может быть удалена ЛЮБАЯ буква (не только последние), и при этом оно все равно считается словом:

Например: beast, best, bet, be - - была бы допустимой возможностью

Вот моя программа, чтобы найти ту, которая удаляет последовательные буквы (мне также интересно услышать, как это можно улучшить и оптимизировать):

#Recursive function that finds how many letters can be removed from a word and
#it still be valid.  
def wordCheck(word, wordList, counter):

    if len(word)>=1:
        if word in wordList:
            return (wordCheck(word[0:counter-1], wordList, counter-1))
        else:
            return counter
    return counter


def main():
    a = open('C:\\Python32\\megalist2.txt', 'r+')
    wordList = set([line.strip() for line in a])
    #megaList contains a sorted list of tuple of 
    #(the word, how many letters can be removed  consecutively)
    megaList = sorted([(i, len(i)-1- wordCheck(i, wordList, len(i))) for i in wordList], key= lambda megaList: megaList[1])


    for i in megaList:
        if i[1] > 3:
            print (i)

if __name__ == '__main__':
    main()
12
задан Parseltongue 21 May 2011 в 22:18
поделиться