基本的に私はPythonでいくつかの文字を取り、それらのすべての組み合わせを取得し、それが実際の単語であるかどうかを確認するスクリプトを持っています(ある意味でスクラブルを考えてください)が、何らかの理由で同じ単語を複数回返しますが、私はそうではありません実行したい場合、スクリプトは次のようになります。
with open("dictionary.txt") as word_file:
english_words = set(word.strip().lower() for word in word_file)
def is_english_word(word):
return word.lower() in english_words
print is_english_word("ham")
print is_english_word("zz")
a = raw_input("Please enter first letter: ")
b = raw_input("Please enter second letter: ")
c = raw_input("Please enter third letter: ")
d = raw_input("Please enter fourth letter: ")
e = raw_input("Please enter fifth letter: ")
check =[a,b,c,d,e]
def get_combos(list):
import itertools
count = len(list)
got = []
combos =[]
while count > 0:
for a in itertools.permutations(list,count):
if a in got:
got.append(a)
else:
got.append(a)
combos.append(a)
count = count - 1
for a in combos:
strip_combos(a)
def strip_combos(list):
count = ''
words = []
for entry in list:
count = count + entry
words.append(count)
check_combo(words)
def check_combo(list):
words = []
got = []
for entry in list:
if is_english_word(entry):
if entry not in words:
print entry
words.append(entry)
get_combos(check)
これで、辞書にある単語だけを印刷することで、私が意図したとおりに機能しますが、たとえば、文字が次の場合、同じ単語を何度も印刷します。
a、c、e、s
リストに表示されるたびに返されますが、check_comboプロシージャで何度も発生する同じ結果を、gotとwordsのリストを使用することで省略していることがわかります。
この問題は、whileループのget_combosプロシージャが原因である可能性があると感じていますが、ほとんどすべてを無駄に変更しようとしたので、自分よりも知識のある人に助けを求めています。