ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้อาร์เรย์ arr ซึ่งแทนตำแหน่งของดาวเคราะห์น้อยต่างๆ ในพื้นที่หนึ่งมิติ
สำหรับดาวเคราะห์น้อยแต่ละดวง ค่าสัมบูรณ์แสดงถึงขนาดของมัน และเครื่องหมายแสดงถึงทิศทางของมัน (ความหมายเชิงบวก ด้านขวา ความหมายเชิงลบ ด้านซ้าย) ดาวเคราะห์น้อยแต่ละดวงเคลื่อนที่ด้วยความเร็วเท่ากัน
หน้าที่ของเราควรจะค้นหาสถานะของดาวเคราะห์น้อยหลังจากการชนกันทั้งหมด หากดาวเคราะห์น้อยสองดวงมาบรรจบกัน ดาวเคราะห์น้อยดวงนั้นก็จะระเบิด ถ้าทั้งคู่มีขนาดเท่ากันทั้งคู่จะระเบิด ดาวเคราะห์น้อยสองดวงที่เคลื่อนที่ไปในทิศทางเดียวกันจะไม่มีวันมาบรรจบกัน
ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ
ป้อนข้อมูล
const arr = [7, 12, -8];
ผลผลิต
const output = [7, 12];
คำอธิบายผลลัพธ์
12 และ -8 จะชนกันส่งผลให้เป็น 12
7 และ 12 จะไม่ชนกัน
ตัวอย่าง
ต่อไปนี้เป็นรหัส -
const arr = [7, 12, -8]; const findState = (arr = []) => { const track = [] for (const el of arr) { track.push(el) while (track[track.length - 1] < 0 && track[track.length - 2] > 0) { const a = -track.pop() const b = track.pop() if (a > b) { track.push(-a) } else if (a < b) { track.push(b) } } } return track }; console.log(findState(arr));
ผลลัพธ์
[7, 12]