Access で数独を解く
- 初めに
まぁ、なんとなく覆面算に続くネタを探していて
数独(あるいはナンプレ)をやるならどうするだろう・・・って考えて、
とりあえずやってみようとなった。
さて、どうなるか。
- 概要
覆面算のときと同様の手法を用い、
1〜9 の数字を含むテーブルを作成し、
それを 81個クロスジョインして、解の条件に当たるものを見つける。
・・・ってことは今回はしない。
81個ものテーブルのクロスジョインなんて無理だろうし、
大体、覆面算のときは半分エイプリルフールネタだし。(笑)
つうわけで次のようにする。
- 各座標とそのグループ分け(各9マスの四角)の情報および判明した値を保持する「世界」
テーブルと1〜9の数字のテーブル「要素」を作成する。
- 「世界」と「要素」のクロスジョインで「可能世界要素」テーブルを作る。
- 問題の初期値を元にして「可能世界要素」から可能性の無い値を削除する。
- 「可能世界要素」から可能性の無い値の除去を収束するまで繰り返す。
- 収束した「可能世界要素」から「可能行」を構成する
- 「可能行」から「可能行組」を構成する
- 「可能行組」から「可能世界」を構成する
大枠は力業だが、肝は「可能世界要素」を収束させる繰り返しである。
- 準備