Chúng tôi bắt buộc phải tạo một máy tính với phương thức nhập RPN (ký hiệu đánh bóng ngược) bằng cách sử dụng Ngăn xếp trong JavaScript.
Hãy xem xét mảng đầu vào sau -
const arr = [1, 5, '+', 6, 3, '-', '/', 7, '*'];
Quy trình -
-
1 là một toán hạng, đẩy lên Stack.
-
5 là một toán hạng, đẩy lên Stack.
-
'+' là một toán tử, bật 1 và 5, tính toán chúng và đẩy kết quả vào Ngăn xếp.
-
6 là một toán hạng, đẩy lên Stack.
-
3 là một toán hạng, đẩy lên Stack.
-
'-' là một toán tử, pop 6 và 3, trừ chúng và đẩy kết quả vào Stack.
-
'/' là một toán tử, pop 6 và 3, chia chúng và đẩy kết quả vào Stack.
-
7 là một toán hạng, đẩy lên Stack.
-
'*' là một toán tử, pop 2 và 7, nhân chúng và đẩy kết quả vào Stack.
Và cuối cùng, kết quả đầu ra phải là -
const output = 14;
Ví dụ
Mã cho điều này sẽ là -
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));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
[14]