7
Scralphabetを最適化する
Scralphabet スクラブルタイルの通常の袋には、次の文字が含まれています(?他の文字を表すことができる空のタイルです)。 AAAAAAAAABBCCDDDDEEEEEEEEEEEEFFGGGHHIIIIIIIIIJKLLLLMMNNNNNNOOOOOOOOPPQRRRRRRSSSSTTTTTTUUUUVVWWXYYZ?? 文字には次の値があります。 {"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,"?": 0} スクラブルタイルの通常のバッグが与えられた場合、以下の条件が与えられた場合に、スコアが最高の非交差単語のセット(つまり、スクラブルボードではなく個々の単語)を構築します。 各単語のスコアはsum(letter_values) * length(word)です。 アルファベットの各文字で始まる単語を1つだけ含めることができます(したがって、最大26単語)。 有効なスクラブル語(この辞書から)のみを含めることができます。辞書をファイルから読んだり、ハードコーディングしたり(ugh)、Webサイトから削除したりできます。 すべてのタイルを使用する必要はありませんが、すべての未使用のタイルは単一の単語を形成し、同じ方法でスコア付けされ、スコアから減算されます。 必要に応じて、コードは2つの入力を受け入れることができます。バッグの内容を文字列として、およびPythonに類似した何らかの形式の文字値dict(上記)。または、バッグの内容と文字の値をハードコーディングできます。セット内の単語、それぞれのスコア、合計スコアを適切な形式で出力する必要があります。 最も高いスコアの単語セットが勝ちとなり、同点が最初に投稿されます。