解答を支援するjava数独プログラム

解答を支援するjavaプログラムの概略。

  • ナンプレ盤面の下の数字(1~9)を押すと、レーザー発射法が自動表示され、盤面右と下に←ヒントが表示されます。その行、列にボタンの数字が一意的に決まります。のボタンを押してみて下さい。
  • 行,列で、同じ数字の重複があると、盤面右と下に重複した数字が表示されます。ブロックでの重複は右下の黄色のマス。
  • 空きマスのclickで候補は(3,7だけ)と表示されます。
  • 一つの数字しか入らないマスがあれば、座標A1のマスはNaked Single4だけと表示されます。行き詰まった時の奥の手。ニコリではマスミと呼びます。

ナンプレ問題盤面

clickしたマスの候補だけ
座標のマスの唯一の候補はNaked Singleでだけ
clickしたマスにを連続入力:

ナンプレ盤面
A
B
C
D
E
F
G
H
I



←盤面変更禁止チェックを入れると、その時、埋められているマスは変更不可になり、外せば再度、変更可能です。2つのボタンは、チェックが入っているとdisabledです。(文字が薄い)

textarea(Text box)は、直接編集可。左クリック→右クリック→全て選択→コピペできます。

この盤面の解き方の例

レーザー発射法とNaked Singleを使います。

レーザー発射法の使い方

ナンプレ盤面下ののボタンから順に押していきます。確定できるマスがあれば、盤面の右と下に←ヒントが表示されるので、そのマスをクリックします。56個のマスが埋まります。

上記の作業が面倒な方は、下の「レーザー発射法の発動」ボタンを押せば、瞬時に56個のマスが埋まります。

レーザー発射法はこれ以上使えないので、奥の手NakedSingleを使います。

Naked Singleの使い方

ナンプレ盤面の上に「座標A1のマスの唯一の候補はNaked Singleで4だけ」と表示されているので、のボタンを押し、A1のマスをクリックします。表示が「座標A2のマスの唯一の候補はNaked Singleで6だけ」と変わります。

Naked Single法とその理論についてはナンプレ支援プログラムNaked Single法で、説明していますが、人間の頭の中で作業するのは困難なので、プログラムに組み込みました。

ナンプレの解答

ナンプレの解答右図が解答です。

java数独プログラムの補足的な使い方の例

  • 1から11のラジオボタンを選択して、下のLoadボタンを押すと、盤面が変わります。この盤面については、ノーヒントです。

    ラジオボタン
    1. レーザー発射法だけ
    2. Naked Single
    3. 初期配置が二つのハートLocked CandidatesとNaked Single。難。
    4. ステルスレーザー発射法
    5. 星3 レーザー発射法だけ
    6. 星4 レーザー発射法だけ
    7. 星5 二国同盟 23マス
    8. 星5 二国同盟 29マス
    9. 星5 二国同盟 25マス
    10. 星5 二国同盟 27マス
    11. 星4 レーザー発射法だけ24マス
  • 最初は変更禁止にチェックが自動的に入っていて、変更できないマスは黄色になっています。チェックを外せば、全てのマスが白くなり、変更可能となります。ただし、その状態で入力されているマスをクリックすると、自動的にそのマスの数字が消えるので、注意が必要です。入力した数字に確信があれば、こまめにチェックを外し、再度チェックを入れるのが良いでしょう。
  • 「盤を全部クリア」ボタンを押し(変更止禁の時は、このボタンは働きません)、自分で任意の盤面を作ります。「盤→Text box」ボタンを押すと、Text boxに盤面のデータが入ります。(0は数字が入っていない事を示します)Text boxを右クリックし、すべて選択→コピー→メモ帳に貼り付け→拡張子をcsvで保存します(この時、9マスごとに改行を入れた方が良いかもしれません)このファイルをエクセルで開きます。
  • Text boxに盤面データをどこからかコピペして、「Text box→盤」ボタンを押すと、盤面が作成されます。多くのサイトでは、空きマスを0ではなく、「,,」のように表現してます。そのうち、このサイトでも対応します。
  • 行,列,ブロックのそれぞれで、数字の重複があると表示されます。行での重複は右側のピンクのマスに、列での重複は下のピンクのマスに重複した数字が表示されます。ブロックでの重複は右下の黄色のマスに「1bx-2」と表示されます。1bx(上段左、中、右のブロックを1bx、2bx、3bx)の2が重複しているという意味です。
ナンプレ盤面へ

最後まで読んでいただいて、ありがとうございました。