解答を支援するjava数独プログラム
解答を支援するjavaプログラムの概略。
- ナンプレ盤面の下の数字(1~9)を押すと、レーザー発射法が自動表示され、盤面右と下に←ヒントが表示されます。その行、列にボタンの数字が一意的に決まります。4のボタンを押してみて下さい。
- 行,列で、同じ数字の重複があると、盤面右と下に重複した数字が表示されます。ブロックでの重複は右下の黄色のマス。
- 空きマスのclickで候補は(3,7だけ)と表示されます。
- 一つの数字しか入らないマスがあれば、座標A1のマスはNaked Singleで4だけと表示されます。行き詰まった時の奥の手。ニコリではマスミと呼びます。
ナンプレ問題盤面
clickしたマスの候補はだけ
座標のマスの唯一の候補はNaked Singleでだけ
clickしたマスにを連続入力:を
この盤面の解き方の例
レーザー発射法とNaked Singleを使います。
レーザー発射法の使い方
ナンプレ盤面下の1のボタンから順に押していきます。確定できるマスがあれば、盤面の右と下に←ヒントが表示されるので、そのマスをクリックします。56個のマスが埋まります。
上記の作業が面倒な方は、下の「レーザー発射法の発動」ボタンを押せば、瞬時に56個のマスが埋まります。
レーザー発射法はこれ以上使えないので、奥の手NakedSingleを使います。
Naked Singleの使い方
ナンプレ盤面の上に「座標A1のマスの唯一の候補はNaked Singleで4だけ」と表示されているので、4のボタンを押し、A1のマスをクリックします。表示が「座標A2のマスの唯一の候補はNaked Singleで6だけ」と変わります。
Naked Single法とその理論についてはナンプレ支援プログラムNaked Single法で、説明していますが、人間の頭の中で作業するのは困難なので、プログラムに組み込みました。
ナンプレの解答
右図が解答です。
java数独プログラムの補足的な使い方の例
- 1から11のラジオボタンを選択して、下のLoadボタンを押すと、盤面が変わります。この盤面については、ノーヒントです。
ラジオボタン - 最初は変更禁止にチェックが自動的に入っていて、変更できないマスは黄色になっています。チェックを外せば、全てのマスが白くなり、変更可能となります。ただし、その状態で入力されているマスをクリックすると、自動的にそのマスの数字が消えるので、注意が必要です。入力した数字に確信があれば、こまめにチェックを外し、再度チェックを入れるのが良いでしょう。
- 「盤を全部クリア」ボタンを押し(変更止禁の時は、このボタンは働きません)、自分で任意の盤面を作ります。「盤→Text box」ボタンを押すと、Text boxに盤面のデータが入ります。(0は数字が入っていない事を示します)Text boxを右クリックし、すべて選択→コピー→メモ帳に貼り付け→拡張子をcsvで保存します(この時、9マスごとに改行を入れた方が良いかもしれません)このファイルをエクセルで開きます。
- Text boxに盤面データをどこからかコピペして、「Text box→盤」ボタンを押すと、盤面が作成されます。多くのサイトでは、空きマスを0ではなく、「,,」のように表現してます。そのうち、このサイトでも対応します。
- 行,列,ブロックのそれぞれで、数字の重複があると表示されます。行での重複は右側のピンクのマスに、列での重複は下のピンクのマスに重複した数字が表示されます。ブロックでの重複は右下の黄色のマスに「1bx-2」と表示されます。1bx(上段左、中、右のブロックを1bx、2bx、3bx)の2が重複しているという意味です。
最後まで読んでいただいて、ありがとうございました。