二国同盟Part3 java支援プログラム
二国同盟が成立するパターンの探索にjavaプログラムを使います。
二国同盟には、縦列/横行/ブロックの3種類があります。ブロック以外の二国同盟については下のリスト。
二国同盟Part3の解き方
初期配置では、レーザー発射法も、Naked Single法も、Locked Candidates法も使えません。二国同盟法を1回使い、後はレーザー発射法だけです。
1と9の二国同盟が中段左(E3,F2)にあります。
二国同盟法
二国同盟を見つける為に、ナンプレ盤面上部の1~9のボタンを押していきます。ナンプレ盤面
1のボタン、9のボタンを押すと、上図のようになります。中段左のブロックには、1の空きマスも9の空きマスも、E3,F2だけです。
二国同盟の成立
従って、この2つのマスE3,F2には、1と9以外の数字は入れません。二国同盟(19同盟)が見つかりました。右図。
ここで、2のボタンを押すと、2の入れるマスは、D3とE3です。右図。
D3に2が確定
E3には、二国同盟で1か9が入るので、2は入れません。D3に2が確定します。E3のマスの候補から2が追い出されたのです。右図。E3に2を入力します。
二国同盟の見つけ方のプログラムのアルゴリズム
javaプログラムは、1、2、3の3つの多重ループになっています。それぞれのループで、1~9のボタンを押していきます(プログラムの中で)。
手作業でも、メモを取りながらボタンを押していくと、できます。しかし、多大な作業を要するので、ボタン一発で解答を得られる「ブロック二国同盟法Wの発動」というプログラムを作りました。このプログラムでも2、3秒かかります。左のボタンを押すとナンプレ盤面にjumpし、D3にグレーの2があり、埋まっているマスの数が24個から25個に増えているのが、判ります。
「二国同盟法の発動」のソースコード(100行)
空きマスが2個のブロックを探索
第1のループ
右の図は、1のボタンを押したところです。
1のボタンを押すと、1つのブロック内で1の空きマスが2個あるのは、中段左(A)、下段中(B)の2箇所である事が分かります(右図)。まず、中段左のブロックのA(E3、F2)から考えます。(サブ ループ)。失敗した時は、Bについて、同じ事をします。
空きマスが上記と同じ状態のブロックを探索
第2のループ
2、3、4、5、6、7、8、9とボタンを押して、中段左のブロックのAと空きマスの状態が同じもの(E3、F2が空きマス)を探します。
右の図は、9のボタンを押したところです。この場合は、幸いにも、9のボタンを押した時のA(E3、F2が空きマス)が、当てはまりました。A(E3、F2)には、1、9の二国同盟以外は入れません。
空きマスが上記と1個違う状態のブロックを探索
第3のループ
中段左のブロックのE3とF2のマス(A)に注目しながら、1から9のボタンを押していきます。中段左のブロックで空きマスが2つで、そのうちの1つがE3かF2のものを探します。
2のボタンを押したのが右の図で、それに該当します。中段左のブロックで、2が入れるのはD3とE3ですが、E3には1と9の二国同盟が入るので、D3に2が確定します。E3のマスの候補から2が追い出されたのです。該当する数字がなかったら、第1のループに戻って、Bについて、同じことをします。それでもだめな場合は、第1のループで2、3、4…のボタンを押していきます。
二国同盟法の後はレーザー発射法
の後、以下の順番でボタンを押していけば、解けます。
23回、63回、81回、92回、32回、63回、81回、42回、51回、15回、94回、72回…。完了。
上記の作業が面倒な方は、下のボタンを押せば、レーザー発射法で、瞬時に解答図までいけます。
解答は右図になります。
ナンプレ問題盤面
clickしたマスの候補はだけ
座標のマスの唯一の候補はNaked Singleでだけ
clickしたマスにを連続入力:を
最後まで読んでいただいて、ありがとうございました。