Dreaming Dean
Hello, I'm Studying
  • Secure
  • Java
  • Oracle
  • +others
Coding.
I AM STUDYING PROGRAMING LANGUAGE. IF YOU WANT TO SEE MY WORK THE PROGRAMMING PROJECT, CHECK IT OUT MY BLOG AND GITHUB.

Odd Number Magic Square 홀수 마방진

Dean92
2017. 5. 17. 10:42

로직


처음 시작 지점은 ( 1 , 3 ) 이다.
현재 위치에서 왼쪽 위 대각선 방향으로 이동하면서 다음 숫자를 채운다.
행과 열을 감소시키면서 숫자를 채운다.
행과 열을 감소 시키면서 숫자를 채우다가 행이 1보다 작으면 행은 5가 된다.
행과 열을 감소 시키면서 숫자를 채우다가 열이 1보다 작으면 열은 5가 된다.
채우는 숫자가 5의 배수의 다음 숫자(5n+1)일 경우 , 행만 1증가 시켜서 채운다.


구현

  • Code


    MagicSquare.java
    public class MagicSquare{
    	int[][] MagicSquare;
    //	int degree =5;
    	int degree;
    	
    	public MagicSquare() {
    		// TODO Auto-generated constructor stub
    	}
    
    	public MagicSquare(int degree) {
    		this();
    		this.degree=degree;
    		start();
    	}
    
    	public void start(){
    		MagicSquare = new int[degree][degree];
    		int x=0;
    		int y=degree/2;
    		MagicSquare[x][y]=1;
    		
    		for(int pos=2; pos<=degree*degree; pos++){
    			x=x-1;	
    			y=y-1;
    			
    			if(x<0){
    				if(y>=0){
    					x=x+degree;
    				}else{
    					x=x+2;
    					y=y+1;
    				}
    			}else{
    				if(y<0){
    					y=y+degree;
    				}else{
    					if(MagicSquare[x][y]!=0){
    						x=x+2;
    						y=y+1;
    					}
    				}
    			}
    			MagicSquare[x][y]=pos;
    		}
    
    		for(int[] first:MagicSquare){
    			for(int value:first){
    				System.out.print(value+ " ");
    			}
    			System.out.println();
    		}
    	}
    
    }
    
    
  • Code


    MagicSquareMain.java
    public class MagicSquareMain {
    
    	public static void main(String[] args) {
    		MagicSquare magicsquare =new MagicSquare(5);
    	}
    
    }
    
  • Result




Comments