1. 程式人生 > >js輸出蛇形矩陣

js輸出蛇形矩陣

來自choice boh

/**
 * 蛇形矩陣
 * 思路整理:首先定義一個二維陣列用來儲存矩陣內容,蛇形矩陣的特點是數字順時針迴旋依次增加1,
 * 可以通過二維陣列座標控制輸出內容。
 * 傳入值必須為正整數!!!
 * 迴圈定義:以3X3陣列為例,一次迴圈為[0][0]==>[0][2]==>[2][2]=>[2][0]=>[1][0]
 *          第二次迴圈:[1][1]
 *   從最外層向內層迴圈迴圈,到中心位置時停止迴圈
 * 迴圈次數:奇數1/2*n+1   偶數1/2*n
 */
function snake(num) {
    var result = new Array();
var flag = 0, //當前迴圈次數,從0起 item = 1, // 輸出項 i = 0, // 橫座標 j = 0, // 縱座標 times; // 迴圈次數 for (let a = 0; a < num; a++) { result[a] = new Array(); for (let b = 0; b < num; b++) { result[a][b] = 0; } } // 順時針輸出函式 function loop() {
// 迴圈左上角起始位置 if (i === j) { result[i][j] = item; // 輸入內容為奇數時,直接輸出 for (j; j < num - flag - 1; j++) { result[i][j] = item; item++; } } // 迴圈右上角 if (i < j) { for (i; i < num - flag - 1; i++) {
result[i][j] = item; item++; } } // 判斷是否為當次迴圈的左上角起始位置,此處為迴圈右下角 if (i === j && i > flag && j > flag) { for (j; j > flag; j--) { result[i][j] = item; item++; } } // 迴圈左下角,方法執行完成標誌一次順時針走完,橫縱座標加1,等待進入下次迴圈 if (i > j) { for (i; i > flag; i--) { result[i][j] = item; item++; } i += 1; j += 1; } } // 迴圈次數為輸入的值(偶數)的1/2*n,奇數為1/2*n+1 if (num % 2 === 0) { times = num / 2; } else { times = num / 2 + 1; } for (flag; flag < times; flag++) { loop(); } //矩陣輸出 // result.forEach((items, index) => console.log(`${items.join(' ')}`)); // 橫向輸出 console.log(result.map(item => item.join(' ')).join(' ')); } //執行方法,輸出蛇形矩陣,傳入值必須為正整數!!! snake(3);