問題タブ [minesweeper]

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

c++ - 2次元配列で隣接するインデックスをチェックする

私は掃海艇を書かなければなりません。隣接するインデックスをチェックして、範囲外に出ずに現在のインデックスを囲む爆弾の数を数える方法を見つけました。しかし、それは長く、醜く、おそらく非効率的です。これらは、範囲外に到達する可能性のある一意のセルごとに一連の条件ステートメントにすぎません。私の質問は、これを行うためのより短い方法はありますか? そして、1次元のワープアラウンド配列を実装すると、それが簡単/難しくなりますか?

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

c - C の再帰関数に関するマインスイーパの問題

プログラミング クラス用に C でゲーム マインスイーパのターミナル バージョンを作成しようとしています。プロジェクトの途中で、解決できない問題に遭遇しました。私は、場所が正方形を明らかにし、再帰的にそれ自体を呼び出して、地雷を含まない隣接する正方形を明らかにする関数を作成しようとしています。この機能は機能しているようですが、地雷に囲まれていない正方形が隠れたままになることがあります。

これは問題の例です。この場合、地雷の数が非常に少ない場合にのみ問題になるようです 4:

ここに画像の説明を入力

これが私のソースコードです。Cを学んでいるだけで最高ではない場合はご容赦ください。

問題は、251 行から 324 行にある私の公開機能にあるはずです。

0 投票する
11 に答える
6988 参照

algorithm - Google Code Jam(2014) 予選ラウンドのマインスイーパ マスター

これは、Google Code Jam 予選ラウンドの問題です (現在は終了しています)。この問題を解決するには?

注: 回答で説明した方法とは異なる方法がある場合は、それを共有してください。この問題を解決するさまざまな方法についての知識を広げることができます。

問題文:

マインスイーパは、1980 年代に人気を博したコンピュータ ゲームで、現在でも Microsoft Windows オペレーティング システムの一部のバージョンに含まれています。この問題も同様の考え方ですが、マインスイーパをプレイしたことがあるとは限りません。

この問題では、同じセルのグリッドでゲームをプレイしています。各セルの内容は、最初は非表示になっています。グリッドの M 個の異なるセルに M 個の地雷が隠されています。他のセルには地雷が含まれていません。任意のセルをクリックして表示できます。明らかにされたセルに鉱山が含まれている場合、ゲームは終了し、負けます。それ以外の場合、公開されたセルには、地雷を含む隣接セルの数に対応する 0 から 8 までの数字が含まれます。2 つのセルがコーナーまたはエッジを共有している場合、2 つのセルは隣接しています。さらに、公開されたセルに 0 が含まれている場合、公開されたセルのすべての隣接セルも再帰的に自動的に公開されます。地雷を含まないすべてのセルが表示されると、ゲームは終了し、勝利します。

たとえば、ボードの初期設定は次のようになります (「*」は鉱山を示し、「c」は最初にクリックされたセルです)。

クリックされたセルに隣接する地雷がないため、表示されると 0 になり、隣接する 8 つのセルも表示されます。このプロセスが続き、次のボードが作成されます。

この時点で、地雷を含まない未公開のセル (「.」文字で示される) がまだあるため、プレイヤーはゲームを続行するためにもう一度クリックする必要があります。

できるだけ早くゲームに勝ちたい。ワンクリックで勝つことほど速いものはありません。ボードのサイズ (R x C) と隠された地雷の数 M を考えると、1 回のクリックで勝つことは可能 (可能性は低いですが) でしょうか? クリックする場所を選択できます。可能であれば、出力セクションの仕様に従って、有効な地雷の構成とクリックの座標を印刷します。それ以外の場合は、「不可能」と出力します。

私の試した解決策:

したがって、解決策として、各非鉱山ノードが他の非鉱山ノードと一緒に 3x3 マトリックス内にあるか、ノードがグリッドの端にある場合は 3x2 または 2x2 マトリックス内にあることを確認する必要があります。これを 0Matrix と呼びましょう。したがって、0Matrix 内の任意のノードには、すべての非鉱山隣接ノードがあります。

まず、必要な鉱山が少ないか、空のノードが少ないかを確認します

たとえば、8 つのクリーン ノードを必要とする 4x4 グリッドがあるとします。手順は次のとおりです。

別の例: 11 個のクリア ノードが必要な 4x4 グリッド。出力:

別の例: 14 個のクリア ノードが必要な 4x4 グリッド。出力:

これで、完全に入力されたグリッドができ、(0, 0) をクリックすると 1 クリックで解決できます。

私のソリューションはほとんどのケースで機能しますが、提出に合格しませんでした (225 ケースの出力ファイル全体を確認しました)。

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

python - マインスイーパのトラブル

現在、Python の掃海艇プログラムに 2D 配列 (リストのリスト) を取得しようとしています。ただし、実行すると、38行目のエラーが表示されます

コード:

これは出力です:

この問題を解決するために何をすべきかわかりません

これについて助けていただければ幸いです