4

私は絞首刑執行人のプログラムを書かなければなりません、「家」だけが悪であり、プレーヤーが(うまくいけば)負けるように言葉を変えます。

ゲームの開始時に、プレーヤーが文字を選択したときにすべての単語のセットを作成します。パターンに一致するセットを作成し、最適なサブセットの作成を続けます。

例えば

ユーザーが3文字の単語を選択したとすると、この例では、英語では次の3文字の単語しかないと言います。バスではなく犬の霧と狐猫

ユーザーが「o」と推測した場合、プログラムは「o」を含まない単語のリストをコンパイルします。このリストを並べ替えて、一方のセットが「and」、もう一方の「bus」、もう一方の「cat」になるようにします。

しかし、私はこれらのセットを保存するのに最適な方法は何だろうと思っていました。

4

2 に答える 2

2

提案として、効率的にサポートするために必要な操作について考えてください。単語を取得してその単語ファミリーにマップし、そこからその単語をそのファミリーに一致する単語のコレクションに配布できるようにする必要があります。このためにMap、単語ファミリ(任意に表現されます)をそのファミリに一致する単語のコレクションに関連付けるようなものを使用することを検討してください。Setコレクションは、、など、さまざまな方法で表すことができListます。こうすることで、文字列を簡単に取得して単語ファミリに変換し、単語ファミリをそのファミリ内のすべての単語のセットにマッピングできます。

お役に立てれば!

于 2012-06-28T22:31:57.543 に答える
1

あなたがしていることを言い換えさせてください:

  1. 指定された長さの単語のセットがあります。
  2. ユーザーが文字を指定するたびに、セットを空にすることなく、その文字を含むすべての単語を現在のセットから削除する必要があります。

オプションで、さらに邪悪になるために:

  1. セットが空の場合は、元の単語セットから、同じインデックスに指定された文字を持つ単語の最大のサブセットを選択する必要があります。

これはあなたがやりたいことですか?

もしそうなら、私はあなたがたくさんやろうとしていることについて考えることを検討します。

単語の大きなリストを含むテキストファイルがあるとします。まず、文字の長さで分割された単語セットのリストを作成します。

そのセットを複製すると、ユーザーに特定の文字を要求し始めることができます。文字が提供されているので、その文字を含むセット内の単語を削除する必要があります。

したがって、ご覧のとおり、これを解決するための単純なアプローチは、セット内のすべての単語を反復処理し、文字を反復処理して、指定された文字が含まれているかどうかを確認することです。

より良い方法は、単語に含まれる文字で単語をビニングすることです。幸運を!

于 2012-07-13T19:41:46.053 に答える