第16講 魔方陣汎用的生成プログラムへの挑戦
第2話 2次元に並んでいるセルに1次元セル番号を割り振る

 
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のグローバル変数に相当するもの)を用意しましょう。

java


第1話へ 第3話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部