2016-07-04 8 views
0

ランダムにスードクボードを生成して再生するプログラムを作りたいと思います。ゲームに精通していない人には、空白がほとんどで、いくつかの数字があらかじめ入力された9x9のゲームボードが用意されています。完了するには、空の四角を記入して、行、列、正方形ですが、一度だけです。数独ボード生成ロジック(Java)

私が現在想像しているやり方は、2次元アレイを使用することです。 forループ内のforループを使用して、その行に値を設定し、同じ行または列で既に使用されている数値が四角になることはありません。

問題はグリッドの3x3部分で既に数値が使用されているかどうかを確認することです。私は3次元配列を使用することを考えていました.3次元は3x3データが格納されている場所ですが、どの配列を現在の四角形にチェックインするかを決める簡単な方法はわかりません。

タイルをランダムに生成すると、私はいつも完全なボードを作成することができますかどうかもわかりません。私はそれが最後のいくつかのタイルの1つになるかもしれないと心配しています。すでに使用されているので、1と9の間の数字は正方形に収まりません。これが可能かどうかを確認する方法はわかりません。

私はトピックに関する他の質問を最小限にしましたが、私は誤って答えに出くわしたくありません。正しい方向にポインタが必要です。また、私が求めているものには直接関係していないようです。

私が求めていることは理にかなっていますが、テキストで説明するのは少し難しいです。あなたが私に答えを与えないで正しい方向にポインタを与えることができたら、私はそれを感謝します。また、あなたがこの質問をクリックした理由についてよくわからないのなら、ここでそれをプレイすることができます: http://www.websudoku.com/ 私はできるだけ早くコメントに回答します。

+0

Ofcozあまりにも多くのものが混乱するでしょう。私はあなたが本当に自分でこれらを理解することができないと思う。あなたは[この](http://stackoverflow.com/questions/6924216/how-to-generate-sudoku-boards-with-unique-solutions)のようなポストを確認するほうがよい – kenshinji

答えて

1

私はあなたに答えを完全に与えるのではなく、いくつかのヒントを与えようとします。

まず、2次元アレイを使用するのは素晴らしいアイデアです。これはまさにスドクボードと同じです。あなたの3D配列のアイデアは、少し複雑すぎます。数学関数を使って各3x3ボックスの上端([0、0]、[0,2]、[2、0]など)を探し、forループを使ってその3x3ボックスをトラバースすることを考えてみましょう2次元配列)。番号をランダムに入れてボードを生成する場合、それはうまくいかないかもしれませんし、ボードの生成は、各ボードに正しい解決策を1つだけ持たせたいと思うほど簡単ではないかもしれません。最初にボードの有効性を確認してから、kenshinjiが投稿したリンクを見てください。

+0

うーん、私はこれのような何かを想像していたと思うしかし、私はどのようにトップコーナーを見つけるか分からない。私はいくつかの掘り出しを行い、私はこれを行う方法を見つけることができるかどうかを確認します。多分、上のコーナーは、何か興味深いもので割り切れるでしょう。これはバックグラウンドプロジェクトのようなものなので、結果が出るまでにはほとんど間違いありません。 – Supetorus

関連する問題