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 ]
廣告