【プログラム\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); } }