問題タブ [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.
python - git 経由でアップロード: 致命的: '/git/p/Boggle' は git リポジトリではないようです
私はreddit pygame boggle challengeをやっています。私のラップトップでは Boggler というディレクトリにありますが、sourceforge では pygame-boggle と呼ばれています。「git push -u origin master」を実行すると、タイトルにエラーが表示されます。私は何を間違っていますか?プッシュするにはどうすればよいですか?
ここの指示に従いました: https://sourceforge.net/p/pygame-boggle/code/ref/master/
c++ - 宣言されていない識別子「top」の使用。「ポップ」のことですか?
私の教授は、ボーグル ゲームのバックトラッキングに関する C++ のコードを教えてくれました。しかし、それは私のためにコンパイルされません。このエラーが発生します。宣言されていない識別子「トップ」の使用。'pop' のことですか? 必要に応じて残りのコードを示します。ありがとう!
java - 単語文字グリッドを検索
私は Boggle ゲームに取り組んでおり、「単語」が「グリッド」で見つかる場合に true を返す findWord というメソッドを作成しています。それ以外の場合は false を返します。それ以外の場合、プライベート メンバー変数 grid は文字グリッドを持ちます。ただし、メインメソッドを実行すると、「見つかりません」という出力が保持され、どこで間違いを犯したのかわかりませんでした。これは私のコードです
c++ - トライにデータを導入する最適な方法は? (C++)
ボーグル ゲームを解くプログラムに取り組んでおり、プログラム全体を 0.1 秒未満で実行する必要があります。標準入力によって辞書をコードに挿入します (これは、最大時間の半分である 0.05 秒続きます)。次の関数を使用して単語を辞書に追加します。単語はそれぞれ 0.1 秒続きます。
この場合、DIM = 4 (Boggle の NxN ボードの次元) で、aux は標準入力からのすべてのデータがダンプされるベクトルです。3 文字以上の単語のみが必要なため、len >= 3 の条件を課します。
これらの関数の速度を改善するためのアイデアはありますか?
java - ボグルソルバーの実装
ランダムな 5x5 の文字板ですべての単語を見つけるための解決策を実装するのに苦労しています。現在、いくつかの単語が返されていますが、完全なリストではありません。私の問題は、for ループを使用した findWords メソッド内にあると確信していますが、if ステートメントを作成して 8 つの方向すべてに移動し続ける方法がわかりません。
java - 次の条件に基づいて各入力文字を検証する方法
私はボーグルゲームを開発しています。キーの押下/上/下などで2つのことを検証したい.
キーボードを使用して、ユーザーはボードにある文字のみを入力するように制限する必要があります (および入力文字列/単語に追加する) 場合はスキップします。4 x 4 のボグル ボードがユーザーに表示されます。例えば
この場合、C - Z は無効な入力であり、入力文字列に追加するべきではありません。完全な単語を入力したときに ENTER キーを 1 回だけ押す必要があります。
入力する文字は、前の文字に (垂直、水平、または斜めに) 隣接している必要があります。
現時点では、scanner( system.in
) を使用して文字列を取得し、2 つの個別の関数を使用してこれらの条件を検証していますが、その場で検証したいと考えています。
私のコード:
要するに、ボードに繰り返し文字はありません。各インデックス位置の隣接文字列とすべてのボード文字の文字列を維持しています。ボードindexof()
内の文字のインデックスを取得するために使用し、隣接文字列 [] で有効性を調べます。 .
algorithm - Boggle - N*N グリッド上のすべての可能なパスをカウントします。パフォーマンス
この質問を読んでいる間、ボグルグリッドで可能なすべてのパスを「単純に」反復し、ワードトライをたどってから、ワードトライに一致がない場合にパスをキャンセルしないのはなぜだろうかと思いました。小さな 4 x 4 のグリッドに多くのパスを配置することはできませんよね? パスはいくつありますか?そこで、F# でパス カウンター関数をコーディングすることにしました。結果は、その他のページで誰も述べていないことをもたらします。グリッド上のパスは、私が推測したよりもはるかに多くなります (実際には、単語セット内の単語よりも多くのパス)。
以上が私の質問の裏話ですが、最終的にコードの実行がかなり遅くなり、コードのいくつかの側面に対して適切な答えを出すことができないことがわかりました。ここでは、最初にコードを示し、次にその下に、説明に値すると思われるポイントを示します...
moves
30 行目で、コードの最適化に役立つことを期待して、最初の引数で関数をカリー化しました。の関数にすぎない、move で作成した 9 つのセットを最適化するかもしれませんn
。結局のところ、何度も何度も生成する必要はありませんよね? 一方で、私はそれが実際に起こることに賭けるつもりはありません。
したがって、質問 1 は次のとおりです。この最適化を、できるだけコードの肥大化を最小限に抑える方法で実施するにはどうすればよいでしょうか? (もちろん、9つのメンバーを持つ型を作成し、可能なnごとにその型の配列を作成してから、事前に計算されたセットの使用のようなルックアップテーブルを実行できますが、私の意見ではコードが肥大化します)。多くの情報源は、平行な折り畳みが重要であると考えられていることをほのめかしています。(複数のコアで実行される) カウント関数の並列バージョンを作成するにはどうすればよいですか?
これをスピードアップする賢いアイデアを持っている人はいますか? たぶん、剪定やメモ化などですか?
最初、関数を実行したときn=4 lmin=3 lmax=8
、fsi で実行したため、時間がかかると思いました。しかし、その後、コードを -O でコンパイルしましたが、それでもほぼ同じ時間がかかりました...
アップデート
皆さんからの入力を待っている間に、コードを肥大化させた手動最適化バージョン (実行速度が大幅に向上) を実行し、それを複数のコアで実行する方法を見つけました。
全体として、これら 2 つの変更により、約 30 倍の速度向上が得られました。ここで、私が思いついた (肥大化した) バージョンを示します (肥大化を回避する方法をまだ探しています):