第8講 数独(ナンプレ)作成アプリVer.3に3on3確定と排除を組み込む
第7話 例外規定最終問題
For k = i + 1 To n_1の役割が何であるか分かりますか。
なぜFor k = 0 To n_1
ではないんでしょうか。
それは、解析の重複を防ぐためです。
07
もし、For k = 0 To n_1
なら、
Function rhk(g As Byte) 'ライン排除確定解析+相補確定解析プロシージャ
          ・
  '以下各数字に対応する行におけるライン排除確定があるかを調べるための手順
  For i = 0 To n_1 'i + 1 は入力する数字を示す。
において、i = 0の場合とi = 1の両方の場合の解析をやってしまうことになります。
i + 1が入力する数字を示していたことをお忘れにならないで下さい。
1の場合で解析した後、2の場合でも解析してしまうということです。
つまり組み合わせでいえば、
(i + 1, k + 1) = (1, 2)の場合と(i + 1, k + 1) = (2, 1)の場合の
両方の場合について解析してしまうことになります。
でもこれは無駄な解析です。
数字の組み合わせが問題なのであって、
順列が問題ではないからです。
順列なら(1, 2)と(2, 1)を区別しますが、
組み合わせの場合には区別しません。
そして、2on2や3on3の場合には、
構成されるリストのメンバーのみが問題なのであって、
候補(リスト)される順番は一切関係がありません。
つまり、2on2や3on3の場合は組み合わせなのです。
重複を防ぐために For k = i + 1 To n_1となっているのです。
kは、iより大きいのですから、
(i + 1, k + 1) = (1, 2)の場合のしか考えられません。
(i + 1, k + 1) = (2, 1)は不可能ですね。


ならば、3番目の数字である6の解析の場合には、
For l = k + 1 To n_1として良いかと問いますと、
違うと答えざるを得ません。
なぜか。
3番目の場合には、2つのセルしか白でない場合があるのです。
具体的には
07すなわち、
(1,2,6)、(1,2,6)、(1,2)
等の場合です。
この数字の順番なら For l = k + 1 To n_1でも問題はありませんが、
もし、
(5,8,2)、(5,8,2)、(5,8)
であれば、3on3の対象なのに、
これを落としてしまいます。
2については、白のセルが2カ所しかないのです。
3番目の数字のカウントに入る条件が、
    If w = 3 Then
      If xs(0) = xs1(0) And xs(1) = xs1(1) And
xs(2) = xs1(2) Then
であったわけですが、2の場合には、
xs(2) = xs1(2) は存在していませんね。
とすると、if文の条件が成立しませんから3番目の数字である2についてはカウントせずに、
次の場合に進んでしまいます。
3on3の対象の対象である組み合わせ
(5,8,2)、(5,8,2)、(5,8)
を落としてしまうことになります。

恐ろしいでしょう。
3on3はこんなところにも落とし穴を用意しているのです。
以上の説明から、 For l = k + 1 To n_1
ではいけないのだということ理解して頂けたでしょうか。
かなりの難題です。
まず、行の3on3解析を行うFunctionプロシージャ
をコーティングして下さい。
でも、皆さんは第4部に挑戦するほど意欲があり、
能力の高い方です。
粘り強く取り組めば、必ず成功します。
それでも壁にぶち当たってしまった場合には、
どうか私にSOSを出して下さい。
優秀な皆さんが苦戦している問題を、
凡庸な私が解決することは難しいですが、
少なくとも私は、2回はクリアしているのですから、
少しは応援できると思います。
fmut1621@hotmail.co.jp
これが私のメールアドレスです。
ファイルを添付して送って頂ければ、
私も皆さんとご一緒に不具合の原因を考えたいと思います。





第6話へ 第8話へ
004

eclipse c++ 入門
魔方陣 数独(ナンプレ)で学ぶ VBA 入門
数独(ナンプレ)のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ