私はゲームプロジェクトを行っています.与えられた文字セットで単語を動的に形成する必要があります...指定された文字セットには重複も含まれる場合があります..単語を形成している間、与えられた文字セットからの文字を使用できます何度でも(2回または3回など)...指定されたセットからすべての可能な意味のある単語を形成するアルゴリズムを手伝ってください
ありがとうございます
私はゲームプロジェクトを行っています.与えられた文字セットで単語を動的に形成する必要があります...指定された文字セットには重複も含まれる場合があります..単語を形成している間、与えられた文字セットからの文字を使用できます何度でも(2回または3回など)...指定されたセットからすべての可能な意味のある単語を形成するアルゴリズムを手伝ってください
ありがとうございます
簡単な方法は、考えられるすべての文字の順序を作成し、それぞれを辞書と比較することです。
迅速な検索を容易にするデータ構造に辞書を格納することで、少し洗練することができます。(ハッシュ テーブル、ツリーなど) 辞書の単語にすばやくアクセスするために 28 項ツリーを実装するつもりでしたが、まだ実現していません。
私は何ヶ月も前にクロスワードソルバーに似たようなことをしました。私は基本的に辞書ファイルを取得し、次のように変更しました。
aardvark:aaadkrr
albatross:aablorsst
次に、特定の文字セットについて、それらを並べ替えて、次のようなものを使用できます。
grep ':{sorted letters}$' mywords.txt | sed 's/:.*$//'
そうすれば、候補の単語が得られます。
完全なセットよりも少ない単語を使用できる単語を探している場合は、その周りにいくつかの順列/組み合わせコードをラップする必要がありますが、指定されたアルゴリズムは非常に効率的でした.
Javaの場合、メモリ内にハッシュテーブルを維持するか(スペースがあると仮定)、ルックアップキーがソートされたバリエーションである外部データベースを使用することを検討pore
しrope
ますeorp
。
私のgrep
ベースのソリューションは私自身の目的には問題ありませんでしたが、堅牢なアプリケーションで外部ツールやサブプロセスに依存したくないでしょう。