【プログラム\MyJava\place\ApStart.java】**************************

import java.awt.*;
import javax.swing.*;


public class ApStart extends JApplet{
    int[] place={1,2,3,4};
    
    public void init(){
        AppletConsole ac=new AppletConsole(this);
        ArrayTest2 ar=new ArrayTest2();
        int[][] ar2=ar.makeArray(place);
        
        ac.append("\n開始(縦に表示します。)\n");
        for(int i=0;i<ar2.length;i++){
            ac.append("\n");
            for(int j=0;j<ar2[i].length;j++){
                ac.append(ar2[i][j]+",   ");
            }
        }
    }
}
        
        
class AppletConsole{
	Container co;
    JTextArea jt;
    JScrollPane js;

	public AppletConsole(JApplet ap){
	    co = ap.getContentPane();
        jt=new JTextArea();
        js=new JScrollPane(jt);
        co.add(js);
        ap.setPreferredSize(new Dimension(800,300));
	}
	
	void append(String st){
	    jt.append(st);
	}
}

class ArrayTest2{
    int[][] cb;
    int row;
    int column;
    
    public int[][] arrayInit(int[][] place,int k){
        for(int i=0;i<place.length;i++){
            for(int j=0;j<place[i].length;j++){
                   place[i][j]=k;
            }
        }
        return place;
    }
    
   
    public int[][] makeArray(int[] place){
        Calc ca=new Calc();
        row=place.length;
        column=ca.factorial(place.length);
        int cr=column;
        int k=0;
        int it=-1;
        
        cb=new int[row][column];
        arrayInit(cb,it);          //配列を-1で初期化し、要素がitでなかったら確定済みとしてスキップする。
        
        for(int i=0;i<place.length;i++){ 
            int c=0;int r=0;k=0;
            cr=cr/(row-i);
            while(c<column){
                if(r==row)r=0;
                 while(cb[r][c]!=it){
                        r++;  
                        if(r==row)r=0;
                    }
                cb[r][c]=place[i];
                c++;k++;
                if(k==cr){
                    r++;
                    k=0;
                }    
            }    
        }
        return cb;  
    }
}

class Calc{
	
	public int factorial(int k){
	    if(k==1)return 1;
		return k*factorial(k-1);	
	}	
}