第14講 ベクタを利用して6次魔方陣を作ろう!
第9話 対角線合計と列合計をすべて一致させる

対角線合計と列合計をすべて一致させるプログラミング例
・・・
・・・
void main(){
   vector<vector<int>> m(6);
   for(int i=0;i<6;i++)m[i].resize(6);
   cout<<"自然配列"<<endl;
   f(m.begin()); //自然配列作成
   h(m.begin()); //自然配列表示
   g(m.begin()); //データ交換
   cout<<endl<<"6次魔方陣もどき=対角線合計と列合計をすべて一致させる"<<endl;
   h(m.begin()); //6次魔方陣もどき=対角線合計と列合計をすべて一致させる表示

   cout<<endl;
   cout<<"プロジェクト終了";
}
・・・
・・・
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;
        }
     }
   }
   for(int i=0;i<3;i++){ //左右交換
     w=m[(1+i)%3][i];
     m[(1+i)%3][i]=m[(1+i)%3][5-i];
     m[(1+i)%3][5-i]=w;
   }

}
参考ダウンロードファイル

実行結果

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

ピンクは中心に対して点対称移動、
紺色は中央の直線に対して左右に線対称移動

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


では、最後薄緑を中央の直線に対して上下に線対称移動しましょう。




第8話へ
 第10話へ


a

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

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