パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

数独の解法ルーチンを作ってみる

2009-08-04 | コンピュータ
数独って、この間初めて一問解いてみました。

ある程度の解法ルーチンなら作れるなーとC#で作ってみました。

グローバル変数はこんな感じ、変数名のつけ方はいい加減^^;
配列数は作りやすさ重視で無駄があります。

//現状のデータ
int[,] bmd = new int[10, 10];
//入る可能性のある数値を入れるデータ
int[, ,] culcBmd = new int[10, 10, 10];
//新しく見つかったデータ
int[,] newBmd = new int[10, 10];



メインループはこんな感じ0.5秒ごとに呼び出します。
最初はここにあるコメントから肉付けしていきました。


//各場所が決まったら設定する

//入る可能性のある数値を入れるデータの初期化

//まずその場所に入る値可能性のない値を消去
//縦横はずし
//ボックスはずし
//一個だったらそれを設定

//ボックスで対象数値がそこだけしかなければそれも決定にする

//今回新たに見つかった場所を赤で表示

//現状のデータ←新しく見つかったデータ



できあがりはこんな感じで解いている最中!

数独 ナンプレ の解き方というサイトの
問題を解かせてみたところ、
上級テクニックの問題までは解けましたが超難問は最後まで解けませんでした。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。