Я использовал эту отвратительную и неэффективную реализацию, чтобы найти слово, из которого могут быть удалены самые последовательные последние буквы, но при этом оно остается словом.
Родео, например, хорошо известно: 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()