問題タブ [maze]

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 投票する
0 に答える
1113 参照

java - Java GUI を使用した迷路の描画 - 四角形が重ねて印刷されます

次のコードを考えると:

クラス BasicShapes

各 2 つのセルの間に Door/Wall としてセパレーターを使用して、 maze を描画する必要があります。メソッド drawMaze() で、最初に頂点とエッジ (頂点=部屋、エッジ=ドア/壁) を持つグラフ G=(V,E) を作成してから、それを使用します。

while ループで、エッジの数だけループを実行し、2 つの部屋 (x、y 平面内) の座標を取得するたびに、コネクタ (壁/ドア) を使用して 1 番目の部屋を印刷したいただし、最初の部屋が他の部屋に印刷されるたびに (および残りのエッジについても)。

どうすれば修正できますか?

よろしく、ロン

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

java - 迷路の GUI を拡大しようとすると四角形が重なる

迷路と GUI の冒険は続きます。現時点G=(V,E) では、頂点が部屋で、エッジがコネクタ (ドアまたは壁) であるグラフを確認できますが、長方形の寸法が小さすぎるため、それらを拡大しますが、長方形は互いに重なり合っています。

次のコードを考えると:

出力:

ここに画像の説明を入力

緑色の四角形はroomsおよびredおよびblueですconnectors。ご覧のとおり、長方形が小さすぎるため、「60」のようなサイズが必要です。ただし、長方形が上下に重ならない とfillRectangleの値の正しい組み合わせを見つけることができないようです。x,x1,y,y1

誰かがこれを修正する方法を説明できますか?

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

c - 再帰的迷路ソルバーを最適化する方法は?

迷路から抜け出す可能性のあるすべてのパスを見つけるために、次の C プログラムを開発しました。そして、迷路の各部屋を通過する必要があります。私が渡している 8*7 配列の場合、54 の空き部屋があるため、'54' がその時点でハードコードされているのはそのためです。私はこれを解決し、書き直すときに動的に渡します。ただし、コードをより効率的にする方法についての助けを探しています.渡された迷路を完了するために300,000以上の可能なパスが見つかりましたが、ほぼ1時間実行されました.

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

java - HashMapを使用したSetのイテレータは値/キーを生成しませんか?

次のコードが与えられます:

クラス座標

パッケージモデル;

そしてゲームクラスのメソッド:

HashMapイテレータがないので、ハッシュマップの要素を取得するためにSetを使用しました。私の問題は、の値を繰り返したいときに始まりましたHashMapが、それが不可能なため、で試しましSetたが、オブジェクト自体ではなく、をSet返します。それを取得する方法はありますか?ObjectCoordinate

よろしく、ロン

0 投票する
7 に答える
6078 参照

java - スタックを使用して迷路を横断して解決する - Java

X と O の迷路を解く迷路ソルバー プログラムを作成しようとしています。私がやりたいのは、ポイントのクラスを作成して、出力ページへの印刷とスタックの実装を比較的簡単にするポイントの 2 次元配列を作成できるようにすることです。

私が実際のプログラム自体に実装したい一般的なアイデアの最も単純なアルゴリズムは、次のようになるはずです。

しかし、より詳細なアルゴリズムを考え出すのと、ポイント クラスを配置するのに苦労しています。ポイントについては、X 座標を設定し、Y 座標と 2 つのゲッターも設定する必要があることを知っています。これらの 2 つよりも多くのメソッドが必要だと思いますか? 同様に、x 座標と y 座標をパラメーターとして渡すメソッドを作成して、x と y を個別に設定するのではなく、それらを 1 つにプッシュできるようにする必要がありますか?

サンプルの迷路は次のようになります。右下から開始し、左上にトラバースしようとします。X は壁、O は迷路の空きスペースです。

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

java - 非再帰的バックトラッキングアルゴリズムを使用した迷路生成の問題

探索可能な領域がランダムに生成されるAndroid用のゲームに取り組んでいます。現在、迷路を生成しようとしています(ASCIIアート出力を使用して表示できるようにしています)。4〜5日間使用していますが、困惑しています。

私は「深さ優先探索」アルゴリズムを使用しようとしていますが、見つけたすべての例で再帰的なバックトラッキングを使用しています。これはAndroid用であり、電話は比較的弱々しいため、再帰はすぐにコールスタックオーバーフローにつながります。そのため、バックトラックにスタックを使用して独自のアルゴリズムを作成しようとしています。

MazeGeneratorクラスとMazeCellクラスを使用して、このソリューションを思いつきました。

MazeGenerator:

MazeCell:

これにより、次のような結果が得られます

すべてのセルが常に上下の隣接セルに接続していることに注目してください。ここで何が悪いのか理解できませんでした。

MazeCellのsetNeighbor関数のチェックで十分なように見えますが、何が起こるかを確認するために、さらにいくつか追加しました。2番目のgenerateMaze()メソッドは次のとおりです。

そしてそれはこのような結果を生み出します

セグメントがすべて分割されていることに注目してください。

私はここで述べられていること以上にそれをいじってみましたが、実際の改善を示すものは何もありません-ほとんどは2番目の写真のように見えます。何か助けはありますか?

0 投票する
5 に答える
70763 参照

java - Java で迷路を解くアルゴリズムを作成する

Java で迷路ソルバーを作成するタスクが割り当てられました。割り当ては次のとおりです。

文字「X」は壁またはブロックされた位置を表し、文字「O」は開いた位置を表します。迷路の入り口は常に右下隅にあり、出口は常に左上隅にあると考えてよいでしょう。プログラムは、その出力をファイルに送信する必要があります。パスが見つかった場合、出力ファイルにはパスが含まれている必要があります。パスが見つからない場合は、メッセージをファイルに送信する必要があります。迷路には複数のソリューション パスがある場合がありますが、この演習では、すべてのソリューションではなく、1 つのソリューションのみを見つけるよう求められていることに注意してください。

プログラムは、スタックを使用して探索中のパスを記録し、ブロックされた位置に到達したときにバックトラックする必要があります。

コードを記述する前に、必ず完全なアルゴリズムを記述してください。課題を完了するのに役立つ追加のクラスを自由に作成してください。

とにかく、私が設定したのは、次のようにブール値を返すすべての基本方向に移動するための set/get メソッドを持つ Points クラスです。

}

私は実際の解決策を主に理解するのに問題があります。ここに私が持っているものがあります:

構文エラーは別として、何か助けてもらえますか? どうもありがとう。

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

javascript - Javascript-ランダム化されたプリムのアルゴリズムproblemランダム化されたプリムのアルゴリズム

javascriptでランダムな迷路ジェネレーターを作成しようとしています。

すでに実用的な例があるかもしれませんが、私はこれを自分で解決しようとしています(まあ、可能な限り)

私が抱えている問題は、スクリプトが数ブロックだけ実行されてから停止することです。

問題は、私がフォローしている説明を理解していることにあると思います(このウィキペディアのページhttp://en.wikipedia.org/wiki/Maze_generation_algorithmから)

このアルゴリズムは、プリムのアルゴリズムのランダム化されたバージョンです。

  1. 壁でいっぱいのグリッドから始めます。

  2. セルを選択し、迷路の一部としてマークします。セルの壁を壁リストに追加します。

  3. リストに壁がありますが:

    1. リストからランダムな壁を選びます。反対側のセルがまだ迷路に入っていない場合:

      1. 壁を通路にし、迷路の一部として反対側のセルに印を付けます。

      2. セルの隣接する壁を壁リストに追加します。

    2. 反対側のセルがすでに迷路に入っている場合は、リストから壁を削除します。

私がハイライトしたように、私の問題はこれの反対側の 部分にあります。これは、ウォールリストにある隣接セルを意味しますか?それとも何か他の意味ですか?

隣接するセルで試してみましたが、でブロックされてしまいます。

任意のアイデアをいただければ幸いです。

動作させることができれば、完了したらコードを投稿します。私が言ったように、私は完全な解決策の助けを得る前に自分で遠くまで行きたいと思っています。

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

java - Java 正規表現支援

このチェックはまだ失敗しています。テストできるように条件を分割します。cs = "WWWW"、"WXW"、"WWWWWWWWRWWWWWW" の場合は失敗します。