第5講 第4講のプログラムエラー原因探索各アイテムの解説
第5話 全体リスト構造解析Total方式の解説その3
  For i = 0 To n_1
    For j = 0 To n_1
      If p(j, i) = 0 Then
        For k = 0 To n_1
          If p(k, i) > 0 Then
            kh(j, i, p(k, i) - 1) = 0
          End If
        Next
      End If
    Next
  Next

においては何をしているかは
m
列の観点から今度はwに塗られる色が決定されます。
今回は、hfから、7の色と
8の色(この色はすでに塗られているので同じ色を重ねます)が塗られます。
  
Dim ybs As Byte, xbs As Byte
  Dim js As Byte, ja As Byte
  Dim ks As Byte, ka As Byte
  For i = 0 To n_1
    ybs = rn * Int(i / rn)
    xbs = rn * (i Mod rn)
    For j = 0 To n_1
      js = Int(j / rn)
      ja = j Mod rn
      If p(ybs + js, xbs + ja) = 0 Then
        For k = 0 To n_1
          ks = Int(k / rn)
          ka = k Mod rn
          If k <> j And p(ybs + ks, xbs + ka) > 0 Then
            kh(ybs + js, xbs + ja, p(ybs + ks, xbs + ka) - 1) = 0
          End If
        Next
      End If
    Next
  Next

はとても難しいコードですが、ここまでついてきた優秀な皆さんはもうお分かりですね。
m
同ブロックのxcから更に、
wに7の色(これ列の条件からすでに塗られているので同じ色が重ねられる)
と9の色が塗られます。
以上を通してwに塗られた色は2,4,8,7,9です。
つまり、セルwには2,4,7,8,9が入力不可で、
1,3,5,6が入力可能性があることが分かります。
  For i = 0 To n_1
    For j = 0 To n_1
      If p(j, i) = 0 Then

がありますので、全空欄について同様な分析をしているわけです。


第4話へ 第6話へ
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入門へ
本サイトトップへ