数独の解き方

数独を解く方法は簡単なものから複雑なものまで様々です。
また、簡単な方法のみを用いて解ける問題も、複雑な方法を用いなければ解けない問題も存在します。

以下によく使われる数独を解く方法を記載しました。このプログラムも基本的にはこれらの方法を基に作成されております。(適宜、更新予定、最終更新:2015年1月)

解法1-1:ルールをそのまま適用する1

ルールをそのまま適用します。
「ある行、列またはボックスのあるセルに数字が入っている場合、同じ行、列またはボックスのそれ以外のセルにはその数字は入らない」という解法です
例えば、「あるセルに1が入っていれば、そのセルと同じ行の他のセルには1は入らない」ということになります。
もちろん行だけではなく、列でもブロックでも同じです。
下記の例では、赤く囲まれたセルには、1を入れることができないことがわかります。

この方法では、必ずしもセルに数字を入れることができません。(1が入らないことは分かっても、それ以外のどの数字が入るかが分からない。)
ただし、このような「あるセルには●がはいらない」という条件を複数組み合わせることによって、数字を埋めることができます。

解法1-2:ルールをそのまま適用する2

ルールをそのまま適用します。
「ある行、列またはボックスにおいて、ある数字を入れることができるセルが一つしかない場合、そのセルにはその数字が入る」という解法です。
例えば、ある行に1をいれることのできるセルが1つしかなければ、そのセルには1が入ることが分かります。
下記の例では、赤い丸で囲まれたセルに1が入ることが分かります。なぜならば、1行目で1を入れることができるセルが赤い丸で囲まれたセルのみであるからです。 同じボックスにすでに1が入っているため、緑色で囲まれたセルには1を入れることができません(解法1-1)。また、すでに同じ列に1が入っているため、紫色で囲まれたセルにも、1を入れることができません(解法1-1)。

解法2-1:2国同盟 タイプ1

解法1-1の拡張版です。
「ある行、列またはボックスにおいて、2つのセルの数字の候補が2つのみである場合、同じ行、列またはボックスのそれ以外のセルにはそれら2つの数字は入らない」という解法です
例えば、あるボックスにおいて、2つのセルの候補が5と9であった場合(候補は2つのみ)、同じボックスのそれ以外のセルに5および9は入りません。
下記の例では、下の赤いまるで囲まれたセルには、9をいれることはできません。その理由は、緑色で囲まれたセルには明らかに5または9しか入れることはできないためです。 上記のルールを適用すると、同じボックスのそれ以外のセルには5または9をいれることはできません。(5をいれることができないことは、解法1-1より、明らかです。)

解法2-2:2国同盟 タイプ2

解法1-2の拡張版です。
「ある行、列またはボックスにおいて、2種類の数字を入れることができるセルが2つしかない場合、それらのセルにはその2つの数字のいずれかが入る(それ以外の数字は入らない)」という解法です。
例えば、あるボックスにおいて、3および4が入るセルが2つしかない場合、その2つのセルには3か4が入り、それ以外の数字は入らない、ということが分かります。
下の赤い丸で囲まれた2つのセルには、3または4が入ります。なぜならば、3および4を入れることができるセルは、このボックスにはほかに存在しないからです。
言い換えると、この2つのセルには、1、2、5、6、7、8、9は入らないということです。1、2、5、6、7、9が入らないことは解法1-1より明らかですが、8が入らないことは自明ではありません。

解法2-3:ボックスライン

「ある行または列において、ある数字を入れることができるセルがすべて1つのボックス内にある場合、そのボックスのそれ以外のセル(その行また列上にないセル)にはその数字は入らない」という解法です
下記の例では、下の赤いまるで囲まれたセルには、8をいれることはできません。その理由は、青色で囲まれた行において8を入れることができるのは緑色で囲まれたセルのみであり、すべて青色で囲まれたボックス内にあるためです。 上記のルールを適用すると、青色で囲まれたボックスのそれ以外のセルには8をいれることはできません。

解法2-4:ポインティングライン

「あるボックスにおいて、ある数字を入れることができるセルがすべて1つの行または列内にある場合、その行または列のそれ以外のセル(そのボックス内にないセル)にはその数字は入らない」という解法です
下記の例では、下の赤いまるで囲まれたセルには、9をいれることはできません。その理由は、青色で囲まれたボックスにおいて9を入れることができるのは緑色で囲まれたセルのみであり、すべて青色で囲まれた行内にあるためです。 上記のルールを適用すると、青色で囲まれたボックスのそれ以外のセルには9をいれることはできません。

解法3-1:3国同盟 タイプ1

解法1-1、解法2-1の拡張版です。
「ある行、列またはボックスにおいて、3つのセルの数字の候補が3つのみである場合、同じ行、列またはボックスのそれ以外のセルにはそれら2つの数字は入らない」という解法です 例えば、ある列において、3つのセルの候補が1と5と8であった場合(候補は3つのみ)、同じ列のそれ以外のセルに1、5および8は入らない、ことが分かります。
解法2-1から自然に想像できる解法ですが、注意することは、すべてのセルの候補が必ず1と5と8の3つ全部である必要はないということです。
下の赤い丸で囲まれたセルには、8をいれることはできません。その理由は、緑色で囲まれたセルには明らかに1または5または8しか入れることができず、紫色で囲まれたセルには、5と8しか入れることができません。上記のルールを適用すると、この列において、緑または紫色で囲まれた3つのセル以外には1、5および8をいれることはできません。
この例では、紫色のセルの候補が5と8のみでした。それでも3つのセルの候補が1と5と8であれば構わないのです。
もっと極端なケースを考えると、例えば、1つのセルの候補は1と5、2つ目は5と8、3つ目は8と1という場合でもこの解法が適用できます。

解法3-2:3国同盟 タイプ2

解法1-2、解法2-2の拡張版です。
「ある行、列またはボックスにおいて、3種類の数字を入れることができるセルが3つしかない場合、それらのセルにはその3つの数字のいずれかが入る(それ以外の数字は入らない)」 という解法です。
例えば、ある行において、4、5、7が入るセルが3つしかない場合(ただし、3つのセルすべてに4、5、7が入る必要はなく、各セルにどれか2つ以上が入り、3つのセル全部で見たときに4、5、7になっていればよい)、その3つのセルには4か5か7が入り、それ以外の数字は入らない、ということが分かります。
下の赤い丸で囲まれたセルには、4または5または7しか入らず、オレンジ色の丸で囲まれたセルには4または7しか入りません。。その理由は、緑色で囲まれたセルには明らかに4、5、7のいずれの数字も入れることができないからです。言い換えると、4または5または7の3つの数字を入れることができるのは、赤またはオレンジで囲まれた3つのセルのみです。
オレンジ色のセルには5を入れることはできませんが、それは構いません。(解法3-1の注意点と類似)
もっと極端なケースを考えると、例えば、4は1つ目のセルと2つ目のセル、5は2つ目のセルと3つ目のセル、7は三つ目のセルと2つ目のセルの候補という場合でもこの解法が適用できます。

解法4:仮代入、背理法

あるセルにどの数字が入るかは分からないが、とりあえず仮に埋めてみて、それを前提に数独を進めていき、矛盾が発生(つまりあるセルに候補となる数字がなくなってしまう)するかどうかを確認する方法です。
もし矛盾が起これば、仮に埋めた数字が誤っていたことになり、その数字はその場所には入らないことになります。
この方法は、ある意味、いつでも使える方法です。極端な話、あるセルに1から9のどれでも入れることができ(普通はないですが。。。)、どれが入るかわからない場合、とりあえず、1を入れてみる、ということも考えられます。また、1回仮代入した後に再度別のセルで仮代入するなど、仮代入を複数回重ねる方法も考えられます。
しかし、このような極端な方法はコンピュータではともかく、人間が用いる方法としては非現実的です。
数独自動解法プログラムでは、あるセルの候補となる数字が2つしかない場合(かつ上記のほかの方法が採用できない場合)に限ってこの仮代入、背理法の方法を適用します。

参考URL