2016-10-09 19 views
-2

scoreList(Rack)関数は、文字のリストを取ります。あなたはまた、グローバル変数辞書を与えられます:["a"、 "am"、 "at"、 "apple"、 "bat"、 "bar"、 "babble"、 "can"、 "foo" "spammy"、 "zzyzva"]。リストのすべての組み合わせを見つける

英字のリストを使用すると、辞書にある文字で可能なすべての単語を見つけることができます。作成できる単語ごとに、scrabbleScoreを使用してその単語のスコアを見つけることもできます。私はリスト内包(マップ、フィルタ、削減、など)のアップ、if文、およびループのために作られた式を使用することができます

scrabbleScore =

[ ["a", 1], ["b", 3], ["c", 3], ["d", 2], ["e", 1], 
    ["f", 4], ["g", 2], ["h", 4], ["i", 1], ["j", 8], 
    ["k", 5], ["l", 1], ["m", 3], ["n", 1], ["o", 1], ["p", 3], 
    ["q", 10], ["r", 1], ["s", 1], ["t", 1], ["u", 1], ["v", 4], 
    ["w", 4], ["x", 8], ["y", 4], ["z", 10] ] 

が、それらは、リストのコンテキストである場合にのみ、理解。

例:

>>> scoreList(["a", "s", "m", "t", "p"]) 
[['a', 1], ['am', 4], ['at', 2], ['spam', 8]] 
>>> scoreList(["a", "s", "m", "o", "f", "o"]) 
[['a', 1], ['am', 4], ['foo', 6]] 

それらは重要ではありません提示される順序。それはまた、リストではなく、ダイスでなければなりません。この問題の助けを借りるか、この問題でマップやフィルターを使用する方法を理解することができれば助かります。これまで

マイコード:

def scoreList(Rack): 
result = [d for d in Dictionary if all(l in Rack for l in d)] 
return result 

私の出力は:あなたが見ることができるように

>>> scoreList(["a", "s", "m", "t", "p"]) 
    ['a', 'am', 'at', 'spam'] 

私が発見した方法を出力言葉をではなく、スコアをします。私はまた、マップ、フィルター、または他のリスト内包表記の使用を実装する方法を理解していません。

+7

なぜ以前の投稿を削除した後に何度も同じ質問をしていますか?あなたはそれを数分前に投稿しました、もし私が昨日も間違っていないならば。 –

+0

申し訳ありませんが、私はいくつかの研究を行い、それを行う別の方法を見つけようとしましたが、これが私がそれを行うことができる唯一の方法です。 –

+0

あなたは昨日の投稿で覚えている限り、あなたの質問を(私を含めて)解決した3-4人のユーザーが応答と時間のためにクレジットを与えるのではなく、投稿を削除したので、これはまったく公正ではありません。私はあなたの問題に答えるために私の時間を無駄にすると思いますか?彼らがあなたを覚えていれば誰も誰もなりません。 –

答えて

0

明らかに同じ質問を(あなたの質問のコメントに従って)繰り返しています。だから私はできるだけ徹底的にこれに答えるつもりです

Dictionaryというリストにスクラブル辞書があるようです。私はその時点から前進するつもりです:

import itertools 

def scoreList(rack): 
    points = dict([ ["a", 1], ["b", 3], ["c", 3], ["d", 2], ["e", 1], 
       ["f", 4], ["g", 2], ["h", 4], ["i", 1], ["j", 8], 
       ["k", 5], ["l", 1], ["m", 3], ["n", 1], ["o", 1], ["p", 3], 
       ["q", 10], ["r", 1], ["s", 1], ["t", 1], ["u", 1], ["v", 4], 
       ["w", 4], ["x", 8], ["y", 4], ["z", 10] ]) 

    validWords = set(Dictionary) 
    answer = [] 
    for l in range(1, len(rack)): 
     for word in itertools.permutations(rack, l): 
      if not word in validWords: continue 
      answer.append(word, sum(points[char] for char in word)) 
    return answer 
+0

私はちょうど名前として辞書を使用していた、リストはリストのままでなければならない。 –

+0

あなたは 'Dictionary'をリストとして残すことができます。これはまだ動作します – inspectorG4dget

関連する問題