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