Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ปัญหาการเรียกซ้ำ Snail Trail ใน JavaScript


สมมุติว่าเรามีอาร์เรย์แบบนี้ −

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

อาร์เรย์ถูกผูกไว้เป็นเมทริกซ์สี่เหลี่ยมจัตุรัส

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้ในอาร์เรย์นี้และสร้างอาร์เรย์ใหม่โดยนำองค์ประกอบและหมุนวนไปมาจนมาบรรจบกันที่ศูนย์ เส้นทางหอยทากที่วนเวียนอยู่รอบด้านนอกของเมทริกซ์และเข้าด้านใน

ดังนั้น ผลลัพธ์สำหรับอาร์เรย์ข้างต้นควรเป็น −

เอาต์พุตคอนสตรัค =[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]