Recent Posts
Recent Comments
04-30 20:19
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Today
Total
관리 메뉴

생각을 IT다

[JavaScript] 홀수 마방진 만들기 (연습) 본문

JS

[JavaScript] 홀수 마방진 만들기 (연습)

흑백논리 2024. 7. 1. 17:36
반응형

 

JavaScript 홀수 마방진 만드는 로직 입니다.

 

function square(input) { // input 값에 따라 x, y, start, end, 배열 생성
	let x = 0; //x축
	let y = Math.floor(input / 2); //y축
	let square = []; //배열
	let start = 1; //시작 값
	let end = input * input; //마지막 값
	
	for(let i=0; i < input; i++) { //배열 증가 마방진 그리기
		square[i] = []; //i번째 배열 생성
		for(let j=0; j < input; j++) { //i번째 배열마다 j 값 input 만큼 반복
			square[i][j] = 0; //해당 위치의 값은 0
		}
	}
	
	while(start <= end) { //마방진 채우기 start -> end
		square[x][y] = start; //첫 시작 위치
		start++; //값 증가
		let newX = (x - 1 + input) % input; //열 위치
		let newY = (y - 1 + input) % input; //행 위치
		
		if(square[newX][newY] != 0) { //해당 좌표에 값이 있을 경우 이전 값 아래
			x = (x + 1) % input; //열 위치
		} else { //0일 때, new 값으로 변경
			x = newX;
			y = newY;
		}
	}
	
	for(let i=0; i < input; i++) { //마방진 출력
		console.log(square[i].join('\t')); //i번째 배열 하나의 문자열로 만들고 탭으로 나눠 출력
	}
}

square(3);

 

 

웹 콘솔에서 즉시 확인 가능하도록 제작되었습니다.

 

JavaScript 연습용으로 제작한 것으로 추가적인 수정이 필요할 수도 있습니다.

반응형

'JS' 카테고리의 다른 글

[JavaScript] 별 찍기 연습  (0) 2024.07.02
[JavaScript / jQuery] 10초 간 3번 클릭 버튼 제어 연습  (0) 2024.07.01
Comments