Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

โจทย์ Snail Trail: การวนอ่านเมทริกซ์แบบเกลียวใน JavaScript

คำอธิบาย

ได้รับเมทริกซ์สี่เหลี่ยมจัตุรัส ต้องอ่านค่าแบบเกลียวจากขอบนอกเข้าสู่กลาง

ตัวอย่าง

เมทริกซ์ 4x4 ให้ผลลัพธ์ [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

ตัวอย่างโค้ด (Recursive)

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 ]