第15講 リスト法による魔方陣末項確定法自動生成ソフトの高速化
第1話 リスト法とは?
リスト法は、
私が数独の問題を解くソフトを開発しているときに思いついた方法です。
リスト法とはなんでしょうか。
私の開発した
良問難問数独自動生成アプリVer.4(対称形)
が作った問題を例に説明しましょう。
2 | 3 | |||||||
5 | 7 | 8 | ||||||
4 | 9 | |||||||
3 | 9 | 8 | ||||||
9 | 7 | |||||||
8 | 6 | 4 | ||||||
2 | 6 | |||||||
8 | 4 | 1 | ||||||
3 | 9 |
(数独に興味をお持ちの方は、問題も解いてみてください。)
この問題の例えば
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
0 | 2 | 3 | |||||||
1 | 5 | 7 | 8 | ||||||
2 | 4 | 9 | |||||||
3 | 3 | 9 | 8 | ||||||
4 | 9 | 7 | |||||||
5 | 8 | 6 | 4 | ||||||
6 | 2 | 6 | |||||||
7 | 8 | 4 | 1 | ||||||
8 | 3 | 9 |
ピンクのセルに入る数字の候補なんでしょうか。
まず、行(横列)の条件から3,9,8が候補から外されます。
次に、列(縦列)の条件1が外されます。
最後に、ブロックの条件から4,6,9が外されます。
ということは残っているのは、
2,3,5,7
のみです。この候補を私はリストと呼んでいます。
そして、空白の全セル(空欄のすべてのます)について、
リストを分析することを全体構造解析と呼びます。
リスト法=全体構造解析によって、
数独の問題を解く速度は何十倍加します。
数独を解くソフトでは、ls(8 ,8 ,8)という配列を用意して
ls(3 ,8 ,0)=2
ls(3 ,8 ,1)=3
ls(3 ,8 ,2)=5
ls(3 ,8 ,3)=7
などとリストするわけです。
(3 ,8)はピンクのセルの座標です。
座標は0行目0列目から始まりますから、
ピンクのセルは3行目4列目です。
セルに入る候補をリストし、
各セルにおいてリストされている候補だけを探索する方法、
これがリスト法です。
この方法を魔方陣末項確定法自動生成完全版ソフト
においても利用できるのではないか。
これが第14講をやっていて気になった点です。
初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門
数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ