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

JavaScript에서 스택을 사용하는 접두사 계산기


자바스크립트에서 스택을 사용하여 RPN(역 폴란드어 표기법) 입력 방식으로 계산기를 만들어야 합니다.

다음 입력 배열을 고려하십시오 -

const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];

프로세스 -

  • 1은 피연산자이며 스택에 푸시합니다.

  • 5는 피연산자이며 스택에 푸시합니다.

  • '+'는 연산자로 1과 5를 팝하여 계산하고 결과를 Stack에 푸시합니다.

  • 6은 피연산자이며 스택에 푸시합니다.

  • 3은 피연산자이며 스택에 푸시합니다.

  • '−'는 연산자이며 6과 3을 뺀 후 결과를 스택에 푸시합니다.

  • '/'는 6과 3을 팝한 연산자로 이들을 나누고 결과를 스택에 푸시합니다.

  • 7은 피연산자이며 스택으로 푸시합니다.

  • '*'는 연산자로 2와 7을 팝하고 곱하고 결과를 스택에 푸시합니다.

마지막으로 출력은 -

여야 합니다.
const output = 14;

예시

이에 대한 코드는 -

const arr = [1, 5, '+', 6, 3, '−', '/', 7, '*'];
const stackCalculator = (arr = []) => {
   const options = {
      '+': (a, b) => a + b,
      '−': (a, b) => a - b,
      '*': (a, b) => a * b,
      '/': (a, b) => a / b
   };
   const stack = [];
   arr.forEach(value => {
      stack.push(value in options
      ? options[value](...stack.splice(-2))
      : value
      );
   });
   return stack;
};
console.log(stackCalculator(arr));

출력

콘솔의 출력은 -

[14]