第14講 ベクタを利用して6次魔方陣を作ろう!
第5話 第2のコードのトレースその1

void g(vector<vector<int>>::iterator m){
   int w;
   for(int i=0;i<3;i++){ //対角線交換
     for(int j=0;j<6;j++){
        if(i==j || 5-j==i){
          w=m[5-i][5-j];
          m[5-i][5-j]=m[i][j];
          m[i][j]=w;
        }
     }
   }
}
のトーレス
i=0の場合
  j=0のとき
        if(i==j || 5-j==i)
    if文の条件が満たされ
          w=m[5-i][5-j];
          m[5-i][5-j]=m[i][j];
          m[i][j]=w;
    の部分が実行されます。
    i=0,j=0ですから
          w=m[5-0][5-0];
          m[5-0][5-0]=m[0][0];
          m[0][0]=w;
    すなわち、
          w=m[5][5];
          m[5][5]=m[0][0];
          m[0][0]=w;
    これは座標(
)と()の交換ですから

   0  1 2 3 4 5
 0 36 2 3  4 5 6
 1 7 8 9 10 11 12
 2 13 14 15 16 17 18
 3 19 20 21 22 23 24
 4 25 26 27 28 29 30
 5 31 32 33 34 35 1

   と1個目の交換が成立します。
  j=1のとき、
    i=0ですから
        if(i==j || 5-j==i)
    は
        if(0==1 || 4==0)

    となり、if文の条件を満たしません。
    したがって、if文は実行されません。
  j=2のとき、
        if(i==j || 5-j==i)
    は
        if(0==2 || 3==0)

    となり、if文の条件を満たしません。
    したがって、if文は実行されません。

  j=3のとき、
        if(i==j || 5-j==i)
    は
        if(0==3 || 2==0)

    となり、if文の条件を満たしません。
    したがって、if文は実行されません。

  j=4のとき、
        if(i==j || 5-j==i)
    は
        if(0==4 || 1==0)

    となり、if文の条件を満たしません。
    したがって、if文は実行されません。
  j=5のとき、
        if(i==j || 5-j==i)
    は
        if(0==5 || 0==0)

    となり、if文の条件を満たし、
          w=m[5-i][5-j];
          m[5-i][5-j]=m[i][j];
          m[i][j]=w;
    の部分が実行されます。
    i=0,j=5ですから
          w=m[5-0][5-5];
          m[5-0][5-5]=m[0][5];
          m[0][5]=w;
    すなわち、          
          w=m[5][0];
          m[5][0]=m[0][5];
          m[0][5]=w;
    これは座標()と()の交換ですから

   0  1 2 3 4 5
 0 36 2 3  4 5 31
 1 7 8 9 10 11 12
 2 13 14 15 16 17 18
 3 19 20 21 22 23 24
 4 25 26 27 28 29 30
 5 6 32 33 34 35 1

    と2個目の交換となります。

では、皆さんi=1、i=2のときはどうなるかトレースをしましょう。
答え合わせは次話で。




第4話へ 第6話へ


a

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

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