JavaScript中的蝸牛步進問題


假設我們有這樣的一組陣列−

const arr = [
   [1, 2, 3, 4],
   [12,13,14,5],
   [11,16,15,6],
   [10,9, 8, 7]
];

該陣列繫結為方塊矩陣。

我們需要編寫一個JavaScript函式,該函式採用此陣列並構造一個新陣列,透過獲取元素並螺旋向內,直至收斂到中心。蝸牛步進在矩陣外部繞圈向內的螺旋。

因此,以上陣列的輸出應為−

const output = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];

因此,讓我們編寫此函式的程式碼。我們將使用遞迴解決此問題。

示例

有關程式碼將為−

const arr = [
   [1, 2, 3, 4],
   [12,13,14,5],
   [11,16,15,6],
   [10,9, 8, 7]
];
const spiralForm = arr => {
   return arr.length > 1 ?
   arr.splice(0,1)[0]
   .concat(spiralForm(arr[0].map((c, i) => {
      return arr.map(r => r[i]);
   })
   .reverse())) :
   arr[0]
}
console.log(spiralForm(arr));

輸出

控制檯中的輸出將為 −

[
   1, 2, 3, 4, 5, 6,
   7, 8, 9, 10, 11, 12,
   13, 14, 15, 16
]

更新於: 2020年10月22日

251次檢視

開啟你的 職業生涯

完成課程獲得認證

開始
廣告