第16講 魔方陣汎用的生成プログラムへの挑戦
第2話 2次元に並んでいるセルに1次元セル番号を割り振る
0 | 1 | 2 | |
0 | 0 | 1 | 2 |
1 | 3 | 4 | 5 |
2 | 6 | 7 | 8 |
座標は、クラス配列
class r{
public static int[] x=new int[9];
public static int[] y=new int[9];
・
を用意しておいて、
次のようにプログラミングすれば2次元を1次元に対応させることが出来ます。
for(i=0;i<9;i++){
x[i]=i%3
y[i]=i/3
}
トレースしてみましょう。
i=0のとき、
x[0]=0%3=0
y[0]=0/3=0
i=1のとき、
x[1]=1%3=1
y[1]=1/3=0
i=2のとき、
x[2]=2%3=2
y[2]=2/3=0
i=3のとき、
x[3]=3%3=0
y[3]=3/3=1
i=4のとき、
x[4]=4%3=1
y[4]=4/3=1
i=5のとき、
x[5]=5%3=2
y[5]=5/3=1
i=6のとき、
x[6]=6%3=0
y[6]=6/3=2
i=7のとき、
x[7]=7%3=1
y[7]=7/3=2
i=8のとき、
x[8]=8%3=2
y[8]=8/3=2
どうです。見事に1次元番号を2次元に割り振っていることがわかります。
実際にはクラス配列は、将来のことを考え
public static int[] x=new int[100];
public static int[] y=new int[100];
とサイズを大きめにとっておきましょう。
将来は、26次魔方陣あたりでも1秒で数百の単位で作成できるようになるからです。
また、普遍的なプログラムにするため
クラス変数(CやVBのグローバル変数に相当するもの) public static int n;を用意しておいて、
nの値をキーボードから取り込めるようにして、
for(i=0;i<n*n-1;i++){
x[i]=i%n
y[i]=i/n
}
としておきましょう。
では、皆さんまず順列を20個ほど表示させるプログラムを考えましょう。
順列を数えるのにやはりクラス変数(CやVBのグローバル変数に相当するもの)を用意しましょう。
第1話へ 第3話へ
VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門
基礎から応用まで第2部
初心者のための
VC++による C言語 入門 C++ 入門 基礎から応用まで第3部