9x9マスの数独(sudoku)解法プログラム
2012/04/03 後 保範 (Ushiro Yasunori、早稲田大学)
1. プログラムの概要
(1) 入出力と出力制御
入力ファイル名: input.txt
出力ファイル名: output.txt
出力制御(bedug=x): xは0,1,2,3が可能で1,2,3はデバッグ用。
sudoku.exeはdebug=0で入力と結果の表示。
(2) 主な関数の機能
step1() : 一意的に値が決まる値の設定
step21(): 2格子の組み合わせでテストし設定
step22(): 2値x2格子の組み合わせでテストし設定
Wreset : 設定可能な数値の数とリストを設定
Areset : 見つかった値をAに反映
(3) 主な配列の役割
A[9][9] : 数独行列、値が0は未知、1〜9は既知
NO[9][9] : 設定可能な数値の数
W[9][9][9] : 設定可能な数値のリスト
2. プログラム
利用する場合はプログラム右クリックで各自のPCに保存してください。
(1) ソースプログラム
Cソースプログラム: sudoku.c
(2) 実行プログラム(windows)
windows実行プログラム: sudoku.exe
3. 入力データ例
2012年3月31日の朝日新聞(beパズル)他から借用。
入力ファイル名はinput.txtで、行毎に9個の数値を9行記載。
1〜9が入力値で0は未定を示す、数値の間は1個以上のスペース。
(1) step1で解ける例
入力データ: input.txt,
input2.txt,
input3.txt
(2) step2が必要な例
入力データ: input4.txt,
input5.txt
4. 結果の出力例
(1) sudoku.exeでの実行結果
input.txtの結果: output.txt
input3.txtの結果: output3.txt
(2) sudoku.cでdebug=1に変更した実行結果
input2.txtの結果: output2.txt
input4.txtの結果: output4.txt
input5.txtの結果: output5.txt