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