[解決済み] クロスワードを生成するアルゴリズム[クローズド]について
2022-07-25 04:24:31
質問
単語のリストがあったとして、それらをどのようにクロスワードのグリッドに並べるか?
基本的には、各単語の開始位置と方向を出力するだけです。
どのように解くのですか?
私は、おそらく最も効率的ではないものの、十分に機能する解決策を思いつきました。基本的には
- すべての単語を長さの降順で並べ替えます。
- 最初の単語を取り出し、ボードに配置する。
- 次の単語を取る。
- ボード上にすでにあるすべての単語を検索し、この単語と交差する可能性があるかどうか(任意の共通文字)確認します。
- この単語の可能性のある場所がある場合、ボード上にあるすべての単語をループし、新しい単語が干渉するかどうかを確認します。
- この単語がボードを壊さないなら、そこに置いてステップ3に進み、そうでなければ、場所を探し続ける(ステップ4)。
- すべての単語が配置されるか、配置できない状態になるまでこのループを続ける。
これで、動作はするものの、しばしばかなりお粗末なクロスワードができあがります。よりよい結果を得るために、上記の基本的なレシピにいくつかの変更を加えました。
-
クロスワードの生成の最後に、単語がいくつ配置されたか (多いほど良い)、ボードの大きさ (小さいほど良い)、および高さと幅の比率 (1 に近いほど良い) に基づいてスコアを付けます。いくつかのクロスワードを生成し、そのスコアを比較して、最も良いものを選びます。
- 任意の回数のイタレーションを実行する代わりに、任意の時間内にできるだけ多くのクロスワードを作成することにしました。もし、小さな単語リストしか持っていなければ、5 秒で何十もの可能なクロスワードを得ることができるだろう。 より大きなクロスワードは、5~6個の可能性からしか選ばれないかもしれません。
- 新しい単語を配置するとき、許容できる場所を見つけたらすぐに配置するのではなく、その単語の位置に、グリッドのサイズをどれだけ大きくするか、交差点がどれだけあるか (理想的には、それぞれの単語が他の単語と 2-3 回交差することが望ましい) に基づいてスコアを与えます。すべての位置とそのスコアを記録し、最適なものを選択します。
関連
-
[解決済み】なぜO(n)はO( nlog(n) )よりも優れているのでしょうか?)
-
[解決済み] どのようにすれば、ほとんどすべてのアルゴリズムを修正して、最良の場合の実行時間を持つようにできるか?
-
[解決済み] DPLLアルゴリズムはどのように動作しますか?[クローズド]
-
[解決済み] 2進数が3で割れているかどうかを知るには?
-
[解決済み] ラジアンを度数に変換する方法は?
-
[解決済み] あるアルゴリズムの計算量がO(log log n)になる原因は何でしょうか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] 40 億の整数以外の整数を生成する。
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] キャッシュの無効化 - 一般的な解決策はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Octave : ロジスティック回帰 : fmincg と fminunc の違い
-
[解決済み] このHeld-Karp TSP Pseudocodeの説明をお願いします。
-
[解決済み] Bogosort (a.k.a Monkey Sort)よりも悪いソートアルゴリズムはあるのか?[クローズド]
-
[解決済み] ラジアンを度数に変換する方法は?
-
[解決済み] 線形時間でのソート?[クローズド]
-
[解決済み] 最小ボトルネックスパニングツリーと最小スパニングツリーはどう違うのですか?
-
[解決済み] 整数の絶対値の計算方法
-
[解決済み] 与えられた数列の中に現れない最小の正の整数を求めよ。
-
[解決済み] キャッシュの無効化 - 一般的な解決策はありますか?
-
[解決済み] 二分探索木におけるk番目の最小要素を最適な方法で探す