数独を解く(2:小枠の歩き方,縦横の歩き方)

今回は数独を解くプログラムの作成の部分です。
数独ルール では
タテ列、ヨコ行、太線で囲まれた3x3のブロック(それぞれ9マスあるブロックが 9つあります)のどれにも1から9までの数字が1つずつ入る。
であるので、このチェックを行う方法からプログラムを作ろう。
まず、タテ列でのチェックでは、
int j;  // チェックするタテの列番号
{
    int  i;
    for (i = 0; i < ncolm; i++) {
        k = array[i][j];         // 内容
        ...
    }
}
である。
  1. この ... の部分にそれぞれの数字が 1回しか使われていないことを調べるプログラムが入る。これを作れ。
  2. ヨコ行でも 1回しか使われていないことを調べるプログラムを作れ。
  3. 3x3のブロックでも 1回しか使われていないことを調べるプログラムを作れ。 このとき、4x4 でも 5x5 でも適用できるように考えよ。
  4. 以上の3つから、マス目の空欄に入れる数字を推測することができる。 どのように考えれば、マス目に入れる数字を推測できるか。
というのが、今回の問題 である。

Copyright 2006 Ken Kishimoto