2016-09-10 21 views
-2

ランダムに選択された文字のプールがあり、これらの文字で単語を作成したいとします。私はこれで私を助けることができるいくつかのコードを見つけましたが、その単語が例えば2 Lとプールのみ1を持つならば、プログラムがいつこのことが起こるかを知りたいと思います。文字列が文字列に含まれているかどうかを確認しますか?

+0

質問は、おそらく非プログラミングに対処されSuperUser.com上で確認する必要があります。findstrについてですので、関連する質問。 –

答えて

0

これを正しく理解している場合は、使用している言語のすべての有効な単語のリストも必要です。

これを仮定すると、この問題を解決するための1つの戦略は、その単語の文字のソートされたリストである辞書内のすべての単語のキーを生成することです。その後、これらのキーで辞書内のすべての単語をグループ化できます。

次に、指定されたランダムな文字のリストから有効な単語を構成できるかどうかを調べる作業は、簡単で高速です。ここで

は、私が示唆しています何の簡単な実装です:

list_of_all_valid_words = ['this', 'pot', 'is', 'not', 'on', 'top'] 

def make_key(word): 
    return "".join(sorted(word)) 

lookup_dictionary = {} 

for word in list_of_all_valid_words: 
    key = make_key(word) 
    lookup_dictionary[key] = lookup_dictionary.get(key, set()).union(set([word])) 

def words_from_chars(s): 
    return list(lookup_dictionary.get(make_key(s), set())) 

print words_from_chars('xyz') 
print words_from_chars('htsi') 
print words_from_chars('otp') 

出力:

[] 
['this'] 
['pot', 'top'] 
+0

実際には、あなたの質問を読んで、多分[this](http://stackoverflow.com/questions/8286554/find-anagrams-for-a-list-of-words)があなたが求めていたものです。 – Bill

+0

それは実際にはそういうものですが、私はその部分をすでに理解しています。ワード=入力( "プール:") プール=入力( "ワード:") iは単語[len(word)-1 ]: プール内の場合: else: print( "is not") たとえばword = CETAとpool = CTAAEの場合、 "is"と表示されます。しかし、word = CETAAAAAならプールに十分なAがないのに "is"と表示されます。それは私の問題です。私は何を入力したか理解できません。 – bajotupie

+0

申し訳ありませんが、word = input( "word:")pool = input( "pool:") – bajotupie

関連する問題