Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

เครื่องคิดเลขคำนำหน้าโดยใช้ stack ใน JavaScript


เราต้องสร้างเครื่องคิดเลขด้วยวิธีป้อนข้อมูล RPN (reverse polish notation) โดยใช้ Stacks ใน JavaScript

พิจารณาอาร์เรย์อินพุตต่อไปนี้ -

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

กระบวนการ -

  • 1 คือตัวถูกดำเนินการ ให้กดไปที่ Stack

  • 5 คือตัวถูกดำเนินการ ให้กดไปที่ Stack

  • '+' เป็นโอเปอเรเตอร์ ป๊อป 1 และ 5 คำนวณและผลักผลลัพธ์ไปที่สแต็ก

  • 6 เป็นตัวถูกดำเนินการ ให้กดไปที่ Stack

  • 3 เป็นตัวถูกดำเนินการ ให้กดไปที่ Stack

  • '−' คือโอเปอเรเตอร์ ป๊อป 6 และ 3 ลบออกแล้วส่งผลลัพธ์ไปที่สแต็ก

  • '/' เป็นโอเปอเรเตอร์ ป๊อป 6 และ 3 แบ่งออกแล้วผลักผลลัพธ์ไปที่สแต็ก

  • 7 เป็นตัวถูกดำเนินการ ให้กดไปที่ Stack

  • '*' เป็นโอเปอเรเตอร์ ป๊อป 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]