第14講 4次及び6次魔方陣の作成
第9話 上下対称移動=6次魔方陣の完成

Ⅵ 中央の直線に対しても上下対称移動

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

解答コード例
class n{
  public static void main(String args[]){
    int[][] a=new int[6][6];
    System.out.println("6次自然配列");
    f(a);
    h(a);
    System.out.println("対角線の交換");
    g(a);
    h(a);
    System.out.println("左右対称移動");
    i(a);
    h(a);
    System.out.println("上下対称移動=6次魔方陣の完成");
    j(a);
    h(a);
  }
  public static void f(int a[][]){
    int i,j;
    for(i=0;i<6;i++){
      for(j=0;j<6;j++){
        a[i][j]=6*i+j+1;
      }
    }
  }
  public static void h(int a[][]){
    int i,j;
    for(i=0;i<6;i++){
      for(j=0;j<6;j++){
        if(a[i][j]<10){
          System.out.print (" ");
          System.out.print(a[i][j]);
          System.out.print (" ");
        }
        else{
          System.out.print(a[i][j]);
          System.out.print (" ");
        }
      }
      System.out.println();
    }
  }
  public static void g(int a[][]){
    int i,w;
    for(i=0;i<3;i++){
      w=a[i][i];
      a[i][i]=a[5-i][5-i];
      a[5-i][5-i]=w;
    }
    for(i=0;i<3;i++){
      w=a[i][5-i];
      a[i][5-i]=a[5-i][i];
      a[5-i][i]=w;
    }
  }
  public static void i(int a[][]){
    int i,w;
    for(i=0;i<3;i++){
      w=a[i][(i+2)%3];
      a[i][(i+2)%3]=a[i][5-(i+2)%3];
      a[i][5-(i+2)%3]=w;
    }
  }
  public static void j(int a[][]){
    int i,w;
    for(i=0;i<3;i++){
      w=a[i][(i+1)%3];
      a[i][(i+1)%3]=a[5-i][(i+1)%3];
      a[5-i][(i+1)%3]=w;
    }
  }
}

実行画面
入門

6次魔方陣の完成です。

尚、左右対称移動と上下対称移動は次話でまとめて解説します。


第8話へ 第10話へ

戻る

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

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