連立方程式による数独の解法
数独の問題を連立方程式を使って解くことを考えましょう。図1は数独の問題例です
。数字が判らない部分に、X1からX11までの文字を割り当てています。
<数独(2X2−2X2)の問題例>
(図1、十進BASICによる2Dグラフィックス>
数独のルールを使って解くべき連立方程式(赤字)を求めると、
X1+X2+3+2=10 → X1+X2=5
X3+X4+X5+X6=10
4+X7+X8+X9=10 → X7+X8+X9=6
2+X10+1+X11=10 → X10+X11=7
X1+X3+4+2=10 → X1+X3=4
X2+X4+X7+X10=10
3+X5+X8+1=10 → X5+X8=6
2+X6+X9+X11=10 → X6+X9+X11=8
X1+X2+X3+X4=10
3+2+X5+X6=10 → X5+X6=5
4+X7+2+X10=10 → X7+X10=4
X8+X9+1+X11=10 → X8+X9+X11=9
が得られます。未知数が11個で式が12個あるので、連立方程式は解けることにな
ります。
上記のような連立方程式をプログラムを使って解くことを考えます。 まずは、 以下の
ような未知数3の連立方程式を解くプログラムからスタートします。
2X+Y+3Z=−7、X+Y+Z=1、5X−4Y−Z=2
ちなみに、この連立方程式の解はX=12/5、Y=19/5、Z=−26/5です。
連立方程式の係数は テキストファイルからプログラム内の配列に読み込むように
します。この例の場合、ファイル内容は以下のようになります(数字は半角で入力)。
一行目 -> 2,1,3,−7
二行目 -> 1,1,1,1
三行目 -> 5,−4,−1,2
三つの方程式の両辺にある数字を掛け、 それらの式を足したり引いたりして次のよ
うな形に変形できれば、連立方程式は解けたことになります。プログラム内でも同様
の計算をすることになります。逆行列を使った計算はしません。