마방진 슈도코드
public void solMagicSquare() { rowInitial = 0;// x가 0 columnInitial = squareSize / 2;// y가 중앙 magicSquare = new int[squareSize][squareSize]; resultMagicSquare = new int[squareSize][squareSize]; // 마방진 초기위치 설정 magicSquare[rowInitial][columnInitial] = 1; // 마방진 구하기 for (int i = 2; i <= squareSize * squareSize; i++) {// 총 N x N개이므로 , 초기값은 // 넣어 졌으므로 2부터 // 먼저 이동 rowInitial = rowInitial - 1; columnInitial = columnInitial - 1; // 이동후 조건 검색 if (rowInitial < 0) { // 세로 음수 if (columnInitial >= 0) { // 가로 정상 세로 음수일때 ( 윗쪽이탈 ) // 세로축을 마방진 크기의 가장 아래쪽으로 이동 rowInitial = squareSize - 1; // x = n-1 } else { // 가로 음수 세로 음수 (왼쪽 윗쪽 이탈) rowInitial = rowInitial + 2; columnInitial = columnInitial + 1; } } else { // 세로 정상 if (columnInitial < 0) {// 가로 음수 // 가로축을 가장 오른쪽으로 이동 columnInitial = squareSize - 1; } else { if (magicSquare[rowInitial][columnInitial] > 0) {// 이동하려는 // 위치에 // 원래 위치의 바로 아래쪽으로 이동 rowInitial = rowInitial + 1 + 1; // 원래 있던곳에서 아래로 한칸 이동 columnInitial = columnInitial + 1; } } } magicSquare[rowInitial][columnInitial] = i; this.resultMagicSquare = magicSquare; } }
.