私はアナグラムソルバーをのPython 2.7に作成しています。Python - リスト内のすべての文字と文字列内の文字だけが一致するかどうかを確認しますか?
ソルバーは、ユーザーが入力したアナグラムを受け取り、各文字をリスト項目に変換し、リスト項目を '.txt'ファイルの行に対してチェックし、アナグラムの文字に一致する単語をpossible_words
リストに追加します。印刷。
作品... ほぼ!無重複文字でアナグラムについては
# Anagram_Solver.py
anagram = list(raw_input("Enter an Anagram: ").lower())
possible_words = []
with file('wordsEn.txt', 'r') as f:
for line in f:
if all(x in line + '\n' for x in anagram) and len(line) == len(anagram) + 1:
line = line.strip()
possible_words.append(line)
print "\n".join(possible_words)
それが正常に動作しますが、このような「ハロー」などの言葉のために、出力はこのような「エリオ、全体、穴」、などなどの単語が含まれていソルバは文字 'L'を2つの別個のエントリとして数えていないようです。
私は間違っていますか?私は欠けている簡単な解決策があるように感じる?
ありがとうございます!
あなたのアルゴリズムは単純すぎます。 'anagram'のすべての文字が' line'(これはアナグラムを識別するのには不十分です)にあるかどうかを調べるのではなく、両方の文字列の各文字タイプの数が同じであるかどうかを確認することができます。 – khelwood
'すべて(xはラインで+ 'anagramのxは\ n')'が問題です。単語に "l"があり、アナグラムに100個がある場合、それでも "True"を返すでしょう –
http://stackoverflow.com/questions/39028548/python-scrabble-challenge-find-html-html-html-html-html-japanese.htmlを参照してください。いくつかのアイデアのための有効な単語/ 39028740#39028740 ...(それは事実上同じ問題です) –