LoginSignup
2
2

More than 5 years have passed since last update.

数独の数の予約について「Rubyで数独」

Posted at

はじめに

Rubyで数独:AIプログラミング入門』の「数の予約」の説明で使っている表の記法と解説をまとめる目的でこのノートは書いています。本の中で使っているパズルは数独通信からひっぱってきているので、そのままではあれなので無料で入手可能なOpen Sudokuのパズルに変更しています。
Open SudokuのVERY HARDのステージ53をある程度まで進めた図が次の左の図になります。この状況から先に進むのに「数の予約」を使えます。下の図の大きな数字は確定済みで、小さな数字はとりうる値を意味しております。

井桁理論3.png

ここから、「数の予約」が使えるところまで、もう少し勧めます。まず中央上段の3X3のボックスに注目するとD5ですでに5が使われているのでD1, D2には5が入りません。
数の予約1.png
つまり、中央上段のボックスに注目すると5はE1かF1に入ります。従って、1列目の他のマスには5は入りません(いずれにしても理論)。ここでは今後の展開に関係のあるB1の5だけ消しておきます。
数の予約2.png
それから、B1のタテとヨコにある数字をB1の候補から除くとB1の候補に1, 7, 9が残ります。
数の予約3.png
次にC列に注目するとC6に7があるので、C4, C6には7は入り得ません。
数の予約4.png
すなわち、C1かC2に7が入るのですが、左上段の3x3ボックスに注目するとC1, C2以外のマスには7が入り得ないことが分かります(いずれにしても理論)。
ここでは、今後の展開に関係のあるB1の7だけ消しておきます。
数の予約6-2.png
次に右上部の3x3ボックスに注目します。E2とF2からG2は1,9は取りえません。またI4とI8からI3も1,9を取りえません。つまり残ったG1かI3に1, 9は入ります(セルの予約)。今後関係するG1だけ2から8の候補を消します。
数の予約7.png
これで準備が整いました。

解説

下の表は3行目のマスを縦軸に、その取りうる値を横軸にとっています。「はじめに」のところの最後の配置ですでに値の確定している部分に◯、入らない値については✕を入れます。1行目に注目すると、B1とG1に1と9が入ります。つまり下の表の"・"の部分は✕が入ります。このテクニックを「数の予約」と言います。
数の予約8-2.png
"・"のところにXを入れた後の状態は次のようになります。
数の予約8.png

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2