2019年9月17日(火)  ルパン5世
                                   

1.はじめに
 数独の解法に関するインターネット記事は多々出ていますが、今回はパソコンを利用し、全候補の中から数字を次々と絞っていく方法を紹介します。いわば消去法です。この方法は紙でも可能ですが、大量の紙を使うので環境によくありません。パソコンの清書機能・保存機能・表計算ソフト機能をフルに使います。

 

2.用語の説明
 本稿で用いる用語を説明します。数字1つが入るスペースを「枡(M)」、3×3の数字のブロックを「枠(W)」、横1列を「行(G)」、縦1列を「列(R)」とし、図1のようにM11……M99、、G1……G9、R1……R9、図2のようにW11……W33とします。
 また、たとえばM23に数字5と数字7の2つだけある場合、M23=(5,7)のように表現します。

3.準備
 まず表計算ソフトで27×27のセルに図F01のように数字を書き込みます。

4.問題の記入
 問題(例題、図3、出典http://gigazine.net/news/20100822_hardest_sudoku/)を見て、たとえばM14=3 ならW12の3以外の数字は候補から除外されますからこれらをすべて消去します。数字を消すとき、私の場合は右手でマウスを操作(セルの範囲指定など)し、左手で「Deleteキー」を押しています。この数字が問題の数字であることを示すため、私は中央のスペースに「◇」のマークを記入しています(5の場合は5の左のスペースに記入)。
 G1のM14以外の3も候補から除外されますからそれらをすべて消去します。R4についても同様です。→図4
 同様に残りのすべて数字についても同じような処理を行います。これで準備OKです(図F02)。

5.法則
 候補の数字を絞る場合、次の法則を用います。本稿では「法1」などと略します。

【法則1】枡Mxyにある数字が1個の場合、その数字をnとすればMxy=n。
【法則2】枡Mxyに数字nがあり、その枠内の他の枡にnがない場合Mxy=n。
【法則3】枡Mxyに数字nがあり、その行(列)の他の枡にnがない場合Mxy=n。
【法則4】ある枠Wxyに数字nが2つ(3つ)だけあり、その2つ(3つ)が更に同じ行(列)に存在する場合、その行(列)のWxy外のnは候補から外れる。
【法則5】ある行(列)に数字nが2つ(3つ)だけあり、その2つ(3つ)が更に同じ枠に存在する場合、その枠内の行以外(列以外)のnは候補から外れる。
【法則6】ある枠でMab=Mcd=(m,n)の場合、その枠内のMab・Mcd以外の枡のm
とnは候補から外れる。
【法則7】ある行(列)でMab=Mac=(m,n)の場合、その行(列)のMab・Mac 以外の枡のmとnは候補から外れる。

 

6.実際の進め方
 法則1から法則7を利用して除外される候補を次々と消去していきます。途中の図では1から9までの数字がすべてありますが、もし各数字だけの図があればさらに見やすくなります。そこで表計算ソフトの機能を使います。たとえば図F03から「1」と「◇」と後述する「◆」だけを残したい場合、まず同じシート上に別の空白の新しい図(図5)を作ります。もし図F03の左上隅のセルがc3なら、図5の左上隅のセルに

 

 =IF(c3=1 or c3="◇" or  c3="◆" , c3 , " ")

 

という式を記入します。最後の「" "」 は半角空白を表します。この式は

 

 「c3が1か◇か◆ならばその値を、それ以外ならば空白を入力せよ」

 

という意味です。この式を他の728個のセルにコピーすれば完成です。
 こうして1と◇と◆だけの図が完成します。2~9についても同様にします。このようにして、(表計算ソフトの)同一シートにメインの図一個とサブの図九個をすべて表すことができます。→図6(サブのみ)
 このとき、法則2~7で消えた数字はその種類をメモしておくと次の検討が楽になります。
 Mxy=nが決定したら、メインの図の同じ行・列・枠内のMxy以外のnをすべて消去します。そして問題図と同様、私は「◆」のマークを記入します。その枡の数字が確定したことを明示するためです。サブの図も連動します。

 手詰まりになったらMab=mと仮定し、やはり法則1から法則7を利用して進めていきます。更に手詰まりになった場合も仮定法を使います。つまり枝分かれができることになるます。
 ただその場合、なるべく二者択一の部分を選ぶと効率的だと思います(場合分けの総数をなるべく少なくため)。二者択一にはある枠(または行・列)に同一数字が2つだけある場合、ある枡に数字が2つだけある場合とがあります。
 その際やり直しがスムースにできるよう、(紙などに)チャートを書いておくと便利です(図7)。枝分かれ前の図は必ず保存しておきます。そして枝分かれ後の図は新しいファイル名を付けて保存します。そのファイルでの作業が終了したら上書き保存します。

 それでは実際に手順を進めてみましょう。当稿では数字を消去していく根拠も記しておきます(法則1についてはほぼ自明なので記載は省略します)。
 そして最終的には図F37が解答となり、書き直すと図8のようになります。