LoginSignup
1

More than 5 years have passed since last update.

数独の井桁理論について「Rubyで数独」

Posted at

はじめに

Rubyで数独:AIプログラミング入門』の「井桁理論」と「数の予約」の説明で使っている表の記法と解説をまとめる目的でこのノートは書いています。本の中で使っているパズルは数独通信からひっぱってきているので、そのままではあれなので無料で入手可能なOpen Sudokuのパズルに変更しています。
Open SudokuのVERY HARDのステージ53をある程度まで進めた図が次の左の図になります。この状況から先に進むのまず「井桁理論」というテクニックが使えます。その後で、ごにょごにょした後で「数の予約」を使えますが、「数の予約」については別のページで解説します。下の図の大きな数字は確定済みで、小さな数字はとりうる値を意味しております。ただしまだ、何も考慮していないので、初期配置以外のマスには1から9が書き込まれています。
初期配置.png

解説

下の表は3行目のマスを縦軸に、その取りうる値を横軸にとっています。初期配置ですでに値の確定している部分に◯、入らない値については✕を入れます。初期配置の3行目に注目すると、A9からA3が、H8からH3が3にはなりません。つまり下の表の❏の部分は✕が入ります。
井桁理論1.png
表の内容を反映させると、配置は次のようになります。
井桁理論1-2.png
3行目を見るとB3かI3に3が入ることが分かります。表の言葉で言えば、△か▲の一方に◯が入り、他方に✕が入るということです。次に5行目に注目すると、I8からI5は3にはなりません。つまり、下の表の❏に✕が入ります。
井桁理論2.png
先程と同様にして、5行目のB5かI5に3が入ることが分かります。これを△と▲で表します(前の表と整合性をとるためには白黒が逆ではいけません)。
❏に✕を入れた段階の図は次のようになります。
井桁理論2-2.png
ここで、B列とI列で同じような表を書いてみると、"・"の位置には✕が入ることが確定していることが分かります。"・"を"✕"にするのを「井桁理論」と呼びます。
井桁理論3-1.png
井桁理論3-2.png
"・"を"✕"にしたあとの図は次のようになります。
井桁理論3.png

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
1