2011-08-13 7 views
-2

私は自分の掃海艇をJavaで設計しようとしています。 そして、実際の窓7の掃除機を分析しながら、私はこの状況に遭遇しました。掃海艇アルゴリズム

1 or 0 ?

(矢印が指す)覆われていない正方形は、1であってもよいし、任意の数(空の正方形)を有するmayn't。 しかし、Windows 7の掃除機では、この広場は1つです。

仮説:分析すると、すべての鉱山は常に数字で囲まれていることが分かりました。

私は私の仮説で行く場合には、他には行かない、むき出しの正方形は1

である必要があり、私はこの仮説に従うならば掃海艇のためのロジックを設計することは、容易になります。 since、

ステップ1:2次元配列の特定の(i、j)要素を-1にしてランダムに四角形を割り当てます。

ステップ2:数値各正方形、それを囲む鉱山の数に等しいです。 (この場合、その仮説は真実になった)。

そして、私の質問は、むき出しの正方形が空の正方形であれば何が問題

  1. ですか?
  2. この仮説は掃海艇のルールですか?
  3. 符号化を簡単にするために、仮説に従わなければならないのですか は実装しますか?
  4. *私は 仮説に対するルールで新しい掃海艇を提案した場合、私の新しい掃海艇が不安定になってしまいますでしょうか?されるように、どのように?

* - >私は意図的にルールを破っていないです、私は、ユーザーへの冗長ヒント/キーを削除してみてください。

+0

この質問には、掃海艇のルールの説明が必要です。それはプログラミングに関する質問でもありません。 –

+0

この質問はプログラミングに関する質問ではないので、話題にはならないようです。 –

+0

矢印付きのこの位置には「1」が必要です。それが「空白」で、ボード上の最初のクリックが「空」と表示された場合、それを囲むすべてのスペースに鉱山がないことを(誤って)示します。また、空のスペースをクリックしたときの通常の動作は、すべての隣接スペースを表示することです。この場合、これは起こりません。 –

答えて

10

もちろん尖った四角数字有する - それはちょうどゼロためshorhandさ1.空の正方形を取得するように正方形それは(正確に一つ)に隣接している鉱山。正方形はアンナンバードことができませんでした

+0

仮説に反して新しい掃海艇を提案した場合、私の新しい掃海艇は不安定に終わるでしょうか? –

+2

あなたの掃海艇が意図的にルールを破った場合、それはもはや再生可能ではありません。あなたがそれを実現するかどうかにかかわらず、それらの数字は、鉱山がどこにあるかを把握する上で不可欠です。 – cHao

+0

@cHao私は意図的にルールを壊しているわけではないので、私は冗長なヒント/キーをユーザに削除しようとしています。 –

6

、数字はその広場を触れているどのように多くの地雷を表します。番号のない四角は「0」で、鉱山に接触していないことを意味します。

そうです、鉱山は常に番号の四角で囲まなければなりません。

0

あなたは掃海艇のフィルアルゴリズムがある番号が表示されない理由。
0の値を持つすべてのフィールドを表示します(0は空白として表示されます)。そして、それは、ゼロでない値を有する、前に明らかにされたものに隣接するフィールドをすべて明らかにする。
コーナーのフィールドに隣接するゼロ値フィールドがないため、自動的には表示されません。

それはあなたが最後の行が空の状態で10x11のフィールドを持っていたい場合は、このフィールドには値1で明らかにされるだろう。1.

を運びます。

Windows版では、既存のすべての鉱山に既にフラグを設定しているため、Windows Minesweeperが残りのフィールドをすべて表示している可能性があります。

関連する問題