Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 모든 충돌 후 상태 찾기

<시간/>

문제

1차원 공간에서 다른 소행성의 위치를 ​​나타내는 배열 arr을 받는 JavaScript 함수를 작성해야 합니다.

각 소행성에 대해 절대값은 크기를 나타내고 부호는 방향을 나타냅니다(양수는 오른쪽, 음수는 왼쪽). 각 소행성은 같은 속도로 움직입니다.

우리의 기능은 모든 충돌 후 소행성의 상태를 알아내는 것입니다. 두 개의 소행성이 만나면 작은 소행성이 폭발합니다. 둘 다 크기가 같으면 둘 다 폭발합니다. 같은 방향으로 움직이는 두 개의 소행성은 결코 만나지 않을 것입니다.

예를 들어 함수에 대한 입력이

인 경우

입력

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]