나선형 배열
2852 단어 수조
function circleNumber(n){
var re = [];
/**
1
2
3
4
*/
var currentPos = 1;
/** 1 xy */
var xy = null;
var max = n * n;
/**
*/
function initMap(){
for(var i= 0 ; i < n ; i++){
var tmp = [];
for(var j = 0 ; j < n ; j++ ){
tmp.push(0);
}
re.push(tmp);
}
}
/**
1
*/
function firstPos(){
if(n%2 == 1){ // ,1
var posx = parseInt(n/2),
posy = parseInt(n/2);
re[posx][posy] = 1;
xy = {x:posx,y:posy};
}else{
var posx = parseInt((n-1)/2),
posy = parseInt((n-1)/2);
re[posx][posy] = 1;
xy = {x:posx,y:posy};
}
}
/**
*/
function step(){
var n = 2;
while(n <= max){
switch(currentPos){
case 1://
if(re[xy.x][xy.y+1] == 0){
re[xy.x][xy.y+1] = n;
n++;
xy = {x:xy.x,y:xy.y+1};
currentPos++;
}else{
if(currentPos == 1){
currentPos = 4;
}else{
currentPos--;
}
}
break;
case 2://
if(re[xy.x+1][xy.y] == 0){
re[xy.x+1][xy.y] = n;
xy = {x:xy.x+1,y:xy.y};
currentPos++;
n++;
}else{
if(currentPos == 1){
currentPos = 4;
}else{
currentPos--;
}
}
break;
case 3://
if(re[xy.x][xy.y-1] == 0){
re[xy.x][xy.y-1] = n;
xy = {x:xy.x,y:xy.y-1};
currentPos++;
n++;
}else{
if(currentPos == 1){
currentPos = 4;
}else{
currentPos--;
}
}
break;
case 4://
if(re[xy.x-1][xy.y] == 0){
re[xy.x-1][xy.y] =n;
xy = {x:xy.x-1,y:xy.y};
currentPos = 1;
n++;
}else{
if(currentPos == 1){
currentPos = 4;
}else{
currentPos--;
}
}
break;
default:
break;
}
}
console.log("end");
}
initMap();
firstPos();
step();
print();
/**
*/
function print(){
var msg = "";
for(var i = 0 ; i < re.length ; i++){
for(var j = 0 ; j < re[i].length ; j++){
msg += " "+re[i][j];
}
msg += "
";
}
alert(msg);
}
}
circleNumber(3);
코드를 console에 복사하여 실행하면 된다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 범용 요약(二): 범용과 수조수조는 원소의 실제 유형을 추적할 수 있으며, 이 유형은 수조가 생성될 때 만들어진 것이다.위에서 설명한 코드 한 줄: gia = (Generic<Integer>[])new Object[SIZE], 그룹을 만들 때 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.