第14講 ベクタを利用して6次魔方陣を作ろう!
第8話 左右対称移動を考えるためのヒント
ヒントとして、
1 2 0
2 0 1
を実現するプログラム例を書いてみましょう。
#include<iostream>
using namespace std;
void main(){
for(int i=0;i<3;i++)cout<<(i+1)%3<<" ";
cout<<endl;
for(int i=0;i<3;i++)cout<<(i+2)%3<<" ";
cout<<endl;
}
ポイントは(i+1)%3等です。
a%bはaをbで割ったときの余りを求めるものです。
例えば、4%3=1です。
トレースしてみましょう。
まず、
for(int i=0;i<3;i++)cout<<(i+1)%3<<" ";
から。
i=0のとき
cout<<(0+1)%3<<" ";
すなわち、
cout<<1%3<<" ";
すなわち、
cout<<1<<" ";
ですから、最初1が表示されます。
i=1のとき
cout<<(1+1)%3<<" ";
すなわち、
cout<<2%3<<" ";
すなわち、
cout<<2<<" ";
ですから、2番目に2が表示されます。
i=2のとき
cout<<(2+1)%3<<" ";
すなわち、
cout<<3%3<<" ";
すなわち、
cout<<0<<" ";
ですから、3番目に0が表示されます。
次ぎに
for(int i=0;i<3;i++)cout<<(i+2)%3<<" ";
について
i=0のとき
cout<<(0+2)%3<<" ";
すなわち、
cout<<2%3<<" ";
すなわち、
cout<<2<<" ";
ですから、最初2が表示されます。
i=1のとき
cout<<(1+2)%3<<" ";
すなわち、
cout<<3%3<<" ";
すなわち、
cout<<0<<" ";
ですから、2番目に0が表示されます。
i=2のとき
cout<<(2+2)%3<<" ";
すなわち、
cout<<4%3<<" ";
すなわち、
cout<<1<<" ";
ですから、3番目に1が表示されます。
以上から
1 2 0
2 0 1
が実現しています。
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 |
では、紺色のセルの左右交換を考えてください。
第7話へ 第9話へ
eclipse c++ 入門講義第1部へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ