問題タブ [boggle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
436 参照

java - Boggle Solver が機能しないのはなぜですか?

ボーグル ソルバーを作成していますが、コーディングのどこで問題が発生したのかわかりません。これが私がこれまでに持っているものです:

}

実行されるだけで、単語が見つかったと言うことはめったにありません。また、実行には非常に長い時間がかかります。約 1 時間です。自分の間違いがどこにあるのかわからないし、どこで間違えたかもわからない。どんな助けでも素晴らしいでしょう!

0 投票する
1 に答える
1904 参照

c++ - C++: 再帰的バックトラッキング ボグル グリッド

このコードは読むのが少し難しいかもしれません.これは、ターゲット ワードが 4 つの方向のいずれかに進むことによってグリッド上で形成できるかどうかをチェックします。このコードには複数のバグがあることは承知していますが、グリッドを検索する方向と方法が明らかに機能していないなど、最も重要な問題を解決する方法について意見を求めたいと思います。

コンソール出力:

コード:

0 投票する
2 に答える
6853 参照

python - 「Boggle」のような単語検索ゲームを Python で解くのに最適なアルゴリズムはどれですか

私はボーグルに似たゲームをコーディングしています。このゲームでは、ゲーマーはランダムな文字でできた大きな文字列の中から単語を見つける必要があります。

たとえば、このように内部に文字列を含む 5 つの配列があります。5 行、それぞれ 6 文字で構成されています。

したがって、ゲームのユーザーは、次の制限とルールを念頭に置いて、利用可能な文字を使用して単語を作成する必要があります。

  • 同じ文字を繰り返して単語を作ることはできません。サイコロであるゲームの「物理的な」文字について話しています。単語を作るために同じサイコロを 2 回以上使用することはできません。
  • 文字を「ジャンプ」して単語を作ることはできません。単語を構成する文字は連続している必要があります。
  • ユーザーは、上記の 2 つ以上の制限なしに、好きな方向に移動できます。したがって、上、下、右、上、というように移動できます。そのため、言葉を探す動きがどこか不安定なのかもしれません。

すべての文字列を調べて単語を作る方法を知りたいです。単語を知るには、単語を含むtxtファイルを使用します。

検索を実行できるアルゴリズムを設計する方法がわかりません。特に、単語を見つけるために必要な不規則な動きについて考え、制限も尊重します。

UX、サイコロを振ってボードゲームを埋めるロジック、および 6 文字のサイコロのすべてのロジックは既に実装しています。

しかし、この部分は簡単ではありません。この興味深い課題に対するあなたの提案を読みたいと思います。

このゲームでは Python を使用しています。これは、コーディングに使用する言語であり、最も好きな言語だからです。しかし、言語に関係なく、アルゴリズム自体の説明や提案も素晴らしいはずです。

0 投票する
4 に答える
2148 参照

java - Java: 再帰メソッドで前のステップの結果を記憶する

私は Boggle ゲームに取り組んでいますが、単語を検索する最良の方法は再帰を使用することだという人もいました。単語を検索するための searchWord メソッドを試しています。最初の文字が見つかった場合、メソッドはそれ自体を呼び出し、最初の文字を削除します。このメソッドは、長さ == 0 (単語が見つかった場合) または false (文字が見つからない場合) の場合に true を返します。問題は時々、1つの「サイコロ」の周りに同じ文字が複数回ある...解決するには、その文字を数える必要があり、それが複数回ある場合は、その文字の次の出現を検索する必要があります(検索最初の文字を削除せずに同じ単語)。その文字と、複数の文字がバインドされている文字のインデックスを記憶する方法が必要です。これにより、文字が見つからないときに、他の可能性があるかどうかを確認するために使用できます。以来」

皆さんが助けてくれることを願っています! メソッドは次のとおりです。

注:はい、文字列の方が良いオプションかもしれないので奇妙な文字列を使用しますが、後で変更できます。

0 投票する
1 に答える
822 参照

java - ボグルボードを解くアルゴリズムの問​​題

だから私はJavaに比較的慣れていないので(現在学校でAP Javaを取っています)、n * nボードを解決するための再帰アルゴリズムを開発しようとしています。送信している文字が単語であるかどうかなどを調べるために辞書を走査するためにすべて書き出されています。可能なすべての組み合わせを見つけるためにあらゆる方向に進みます。(n,p) で始まるすべての組み合わせが見つかったら、行の最後に到達するまで p をインクリメントし、n をインクリメントして p を 0 から再び開始します。(組み合わせは前後同じなので半分しか通らない)

私が問題を抱えている部分は、再帰シーケンスです。ボード上の特定の位置に移動したら、シーケンスの残りの部分で二度と移動しないようにマークしたいからです。それは完全には機能しません。誰かが理由を教えてくれたり、より良いアルゴリズムを書くのを手伝ってくれないかと思っていました。前もって感謝します

0 投票する
1 に答える
142 参照

algorithm - 4X4マトリックス内の文字のすべての組み合わせをナビゲートして見つけるために、再帰的な方法で範囲を超え続けます

これはBoggleソルバーの一部です。文字列行列をトラバースする再帰的な方法を作成しました。MyLetteresすべての文字が保存され(例:a、b、c ...)、MyLetteres1空として初期化され、になりtrackerますfalse。これらの変数は、マトリックス内のどの座標に既にアクセスしたかを示します(座標に再度アクセスすることはできません)。隣接する座標にしか移動できません(スキップできません)。パラメーターString wordは、1文字(開始点)で初期化されます。int xint yは私の(x、y)座標です。無視int pしてint n

私が問題を抱えているのは、メソッドがすでに通過した座標を適切にマークできないようであり、次に実行するためにtracker(最後の行)をリセットできないように見えることです。falsegetPaths()

これが私のコードです助けてください!

0 投票する
1 に答える
106 参照

php - 間違いはどこですか?PHPレターマトリックスボグル

これらの php コードはここにありますが、コードが正しく機能していません。私はいつも空の結果配列を取得するので、それはif(isset($words[$word]))うまくいかないようです

0 投票する
1 に答える
401 参照

java - 辞書検索をより効率的にする

私は Java でボーグル ソルバーを作成しました。ボードを解くのに約 1 分 30 秒かかります。これは、辞書をたどる方法のおかげであると確信しています。アイデアは、それが単語であるかどうか、またそれが有効な接頭辞であるかどうかを確認することです。有効なプレフィックスの場合は true を返すため、プログラムは実行を続けます。false が返された場合、プログラムはコースの実行を停止します。トライ構造について読みましたが、それらを実装する方法がよくわかりません。記述されたコードの例と簡単な説明が最も高く評価されます

0 投票する
1 に答える
1068 参照

java - Java Boggle ゲームの時間制限を設定する

ボグルボードを解決するコードを書きましたが、それを自分のゲームに変換したいと考えています。必要なものはすべて揃っていますが、時間制限を設定する方法がわからないため、その人は 2 分間しか単語を入力できません。これは私がこれまでに持っているものですが、2分後に停止するという、私がやりたいことをしません。

0 投票する
1 に答える
1316 参照

java - ボグル ボードに単語が存在するかどうかを確認するための再帰的な方法をデバッグする

ボーグル ソルバーを実装しようとしています。

私の基本的なアイデアは、単語がボード上にあるかどうかを確認するメソッドを作成することでした。次に、ボード上にないcharで始まる単語を削除して辞書をトリムし、そのメソッドを辞書セットのすべての単語に適用して、ソリューションセットを取得します。

このソリューションがどれほど効率的かは完全にはわかりません.. O(n)(辞書セットのサイズに比例)で実行されるだけだと確信しています-これはより大きなボード(5x5 - 7x7)でうまくいくでしょう

私の現在の方法(訪問した方法を修正できればうまくいくはずです):

再帰を正しく実装しているかどうかはわかりません..今は単語が見つかりませんが、うまくいくように思えます..? 訪問したセットを正しく処理しているかどうか (各深度で訪問したタイルを追跡している場合) が特に心配ですが、それ以外の場合は短い単語を見つけることができるはずなので、それだけの問題ではないことはわかっています。 ..

また、「findFirstTile」メソッドは、その文字で始まる最後のタイルの単語の検索のみを開始することに気付きました...そのため、ボード上にその文字が複数回出現する場合、すべてを検索しない可能性があります。

これは、私の Tile オブジェクトのコンストラクタでもあります。

私が参照する Tile 配列 (タイル) も、すべてのタイルを順番に並べただけの配列なので、基本的に私のボードでは次のようになります。

「場所」(Tileコンストラクターから)はちょうど

getNeighbors() と getChar() と getPlace() メソッドをチェックしましたが、それらはすべて意図したとおりに機能します。