Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm trạng thái sau tất cả các va chạm trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript đưa vào một mảng, arr, đại diện cho vị trí của các tiểu hành tinh khác nhau trong không gian một chiều.

Đối với mỗi tiểu hành tinh, giá trị tuyệt đối đại diện cho kích thước của nó, và dấu hiệu đại diện cho hướng của nó (nghĩa là tích cực bên phải, nghĩa là tiêu cực bên trái). Mỗi tiểu hành tinh di chuyển với tốc độ như nhau.

Chức năng của chúng tôi có nhiệm vụ tìm ra trạng thái của các tiểu hành tinh sau tất cả các vụ va chạm. Nếu hai tiểu hành tinh gặp nhau, tiểu hành tinh nhỏ hơn sẽ phát nổ. Nếu cả hai có cùng kích thước, cả hai sẽ phát nổ. Hai tiểu hành tinh chuyển động cùng chiều sẽ không bao giờ gặp nhau.

Ví dụ:nếu đầu vào của hàm là

Đầu vào

const arr = [7, 12, -8];

Đầu ra

const output = [7, 12];

Giải thích đầu ra

12 và -8 sẽ va chạm dẫn đến 12.

7 và 12 sẽ không bao giờ va chạm.

Ví dụ

Sau đây là mã -

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));

Đầu ra

[7, 12]