ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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]