数独のPointing:ブロックを使って候補を消去する

数独のPointingテクニックを学びましょう。ブロック内で一直線に並んだ候補を使い、行や列から可能性を消去する方法を解説します。

はじめに

Pointingは、ブロック・行・列の関係に基づく数独の中級テクニックです。

考え方はシンプルです。3×3ブロック内で、ある数字が入れるすべての位置が同じ行または同じ列にあるなら、その数字はそのブロック内のそのライン上に入ります。そのため、ブロック外の同じ行または列にある他のマスから、その候補を消去できます。

このテクニックは必ずしもすぐに数字を入れるものではありませんが、候補を消去し、盤面を簡単にできます。

このガイドでは、Pointingとは何か、どう見つけるか、そしてClaimingと混同せずに使う方法を見ていきます。

Pointingテクニックとは

Pointingは、ブロック内である数字が同じ行または同じ列に属するマスにしか現れないときに成立します。

これは、その数字がブロック内では必ずその行または列に入るという意味です。ブロック内のどのマスかはまだ分からなくても、ブロック外の同じライン上にはその数字がもう現れないと分かります。

たとえば、あるブロックで数字4が同じ行の2マスにしか入れないとします。すると、そのブロックの4は必ずその行に入ります。そのため、同じ行のブロック外にある他のマスから候補4を消去できます。

ブロックと行の関係

最も一般的なのは、ブロックと行の関係です。

3×3ブロックを想像してください。数字7がブロック内の2マスにだけ候補としてあり、その2マスがどちらも同じ行にあります。

標準的な数独では各ブロックに数字7が1回だけ入る必要があるため、7は必ずその2マスのどちらかに入ります。つまり、同じ行では、そのブロックの外に7を置くことはできません。

そのため、ブロック外にある同じ行の他のマスから候補7を消去できます。

この考え方はとても役立ちます。ブロック内の局所的な情報を、行全体に沿ったより広い消去へつなげるからです。

ブロックと列の関係

Pointingは列でも機能します。

この場合、ブロック内である数字の候補がすべて同じ列にあります。つまり、そのブロックのその数字はその列に入る必要があります。

そのため、ブロック外の同じ列にある他のマスから、その候補を消去できます。

たとえば、あるブロックで数字2が同じ列の2マスにしか入れないなら、そのブロックの2は必ずそのどちらかに入ります。ブロック外の同じ列にある他のマスには、もう2を入れられません。

原理は行の場合と同じです。変わるのは整列の方向だけです。

ブロック内で候補が整列しているとき

Pointingのキーワードは「整列」です。

ある数字がブロック内で候補として2回または3回現れるだけでは不十分です。このテクニックを使うには、その数字が入れるすべての位置が、ブロック内で同じ行または同じ列にある必要があります。

候補が整列していない位置に分散している場合、Pointingは使えません。

たとえば、数字5が同じブロック内の3マスに現れていても、1つが左上、1つが中央、1つが右下にあるなら、有効な整列ではありません。一方、3つすべてがブロック内の同じ行にあるなら、Pointingを使えます。

ブロック外で消去する候補

Pointingでは、消去はブロックの外で行われます。

その数字がブロック内で行に整列しているなら、同じ行のブロック外にある他のマスからその候補を消去します。

その数字がブロック内で列に整列しているなら、同じ列のブロック外にある他のマスからその候補を消去します。

ブロック内の候補を消してはいけません。そこにまだその数字を置く必要があるからです。役立つ情報は、そのブロックの数字がそのライン上に入るということです。したがって、同じラインの別の場所には現れません。

ガイド付き例

盤面の左上ブロックを想像してください。このブロックには数字9が欠けています。

候補を確認すると、9はそのブロック内の2マスにしか入れないと分かります。どちらも1行目にあります。

これは、左上ブロックの9が必ず1行目に入るという意味です。そのため、1行目のそのブロック外にある他のマスには候補9を置けません。

したがって、他のブロックにある1行目のマスから9を消去できます。

それらのマスの1つに候補が1つだけ残れば、新しい即時の手が生まれます。

Claimingとの違い

PointingとClaimingはどちらもブロックとラインの関係を扱うため似ています。違いは出発点です。

Pointingではブロックから始めます。ブロック内である数字の候補がすべて同じ行または列にあることに気づきます。その後、そのライン上のブロック外からその数字を消去します。

一方Claimingでは、行または列から始めます。そのライン上で、ある数字が特定のブロック内にしか入れないことに気づきます。その後、そのブロックの他のマスからその数字を消去します。

覚え方はこうです。Pointingはブロックからラインへ進みます。Claimingはラインからブロックへ進みます。

続きを読む