第27講 数独(ナンプレ)自動生成
第12話 新しい番号付けとそれに対応する座標を設定するプログラムの解説その4

では、次ぎに
   for(i=0;i<3;i++){
     for(j=0;j<3;j++){
        for(k=0;k<3;k++){
          for(l=0;l<3;l++){
             a[3*i+k][3*j+l]=9*(3*i+j)+3*k+l;
          }
        }
     }
   }
の動きをトレースしてみましょう。
i=0のとき
 j=0のとき
  k=0のとき
   l=0のとき
    a[3*i+k][3*j+l]=a[3*0+0][3*0+0]=a[0][0]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*0+0=0
    から、a[0][0]=0 q
   l=1のとき
    a[3*i+k][3*j+l]=a[3*0+0][3*0+1]=a[0][1]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*0+1=1
    から、a[0][1]=1 w
   l=2のとき
    a[3*i+k][3*j+l]=a[3*0+0][3*0+2]=a[0][2]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*0+2=2
    から、a[0][2]=2
 a
ここまでは前回と全く同じ動きです。
変わるのはここからです。

  k=1のとき
   l=0のとき
    a[3*i+k][3*j+l]=a[3*0+1][3*0+0]=a[1][0]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*1+0=3
    から、a[1][0]=3 
t

  l=1のとき
    a[3*i+k][3*j+l]=a[3*0+1][3*0+1]=a[1][1]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*1+1=4
    から、a[1][1]=4 e
   l=2のとき
    a[3*i+k][3*j+l]=a[3*0+1][3*0+2]=a[1][2]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*1+2=5
    から、a[1][2]=5 
d

 k=2のとき
   l=0のとき
    a[3*i+k][3*j+l]=a[3*0+2][3*0+0]=a[2][0]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*2+0=6
    から、a[2][0]=6 h
   l=1のとき
    a[3*i+k][3*j+l]=a[3*0+2][3*0+1]=a[2][1]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*2+1=7
    から、a[2][1]=7 
r

   l=2のとき
    a[3*i+k][3*j+l]=a[3*0+2][3*0+2]=a[2][2]
    9*(3*i+j)+3*k+l=9*(3*0+0)+3*2+2=8
    から、a[2][2]=8 s 
 

 j=1のとき
  k=0のとき
   l=0のとき
    a[3*i+k][3*j+l]=a[3*0+0][3*1+0]=a[0][3]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*0+0=9
    から、a[0][3]=9 
v

   l=1のとき
    a[3*i+k][3*j+l]=a[3*0+0][3*1+1]=a[0][4]
    9*(3*i+j)+3*k+l=9*(3*0+1)+0*1+1=10
    から、a[0][4]=10 g
   l=2のとき
    a[3*i+k][3*j+l]=a[3*0+0][3*1+2]=a[0][5]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*0+2=11
    から、a[0][5]=11
 l
  k=1のとき
   l=0のとき
    a[3*i+k][3*j+l]=a[3*0+1][3*1+0]=a[1][3]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*1+0=12
    から、a[1][3]=12 4
   l=1のとき
    a[3*i+k][3*j+l]=a[3*0+1][3*1+1]=a[1][4]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*1+1=13
    から、a[1][4]=13 7
   l=2のとき
    a[3*i+k][3*j+l]=a[3*0+1][3*1+2]=a[1][5]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*1+2=14
    から、a[1][5]=14 8
 

  k=2のとき
   l=0のとき
    a[3*i+k][3*j+l]=a[3*0+2][3*1+0]=a[2][3]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*2+0=15
    から、a[2][3]=15 9
   l=1のとき
    a[3*i+k][3*j+l]=a[3*0+2][3*1+1]=a[2][4]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*2+1=16
    から、a[2][4]=16 4
   l=2のとき
    a[3*i+k][3*j+l]=a[3*0+2][3*1+2]=a[2][5]
    9*(3*i+j)+3*k+l=9*(3*0+1)+3*2+2=17
    から、a[2][5]=17 1
 


本話はここまで。



第11話へ 第13話へ


a

eclipse c++ 入門講義第1部へ

eclipse c++ 入門講義第2部へ


魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ