mirror of
https://github.com/theoludwig/programming-challenges.git
synced 2025-05-18 12:02:53 +02:00
feat: rewrite programming-challenges CLI (#3)
This commit is contained in:
@ -0,0 +1,3 @@
|
||||
# reverse-polish-notation/javascript/function
|
||||
|
||||
Created by [@Divlo](https://github.com/Divlo) on 6 June 2021.
|
@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
@ -0,0 +1,43 @@
|
||||
import readline from 'readline'
|
||||
|
||||
const input = []
|
||||
const readlineInterface = readline.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
})
|
||||
readlineInterface.on('line', (value) => {
|
||||
input.push(value)
|
||||
})
|
||||
readlineInterface.on('close', solution)
|
||||
|
||||
const operations = {
|
||||
'+': (number1, number2) => number1 + number2,
|
||||
'-': (number1, number2) => number1 - number2,
|
||||
'*': (number1, number2) => number1 * number2,
|
||||
'/': (number1, number2) => number1 / number2
|
||||
}
|
||||
|
||||
function solution () {
|
||||
console.log(reversePolishNotation(input[0]))
|
||||
}
|
||||
|
||||
function reversePolishNotation(value) {
|
||||
if (value.length === 0) {
|
||||
return 0
|
||||
}
|
||||
const stack = []
|
||||
const values = value.split(' ')
|
||||
values.forEach((value) => {
|
||||
const number = Number(value)
|
||||
if (!isNaN(number)) {
|
||||
stack.push(number)
|
||||
} else if (operations.hasOwnProperty(value)) {
|
||||
const number1 = stack.pop()
|
||||
const number2 = stack.pop()
|
||||
const operation = operations[value]
|
||||
const result = operation(number2, number1)
|
||||
stack.push(result)
|
||||
}
|
||||
})
|
||||
return stack.pop()
|
||||
}
|
Reference in New Issue
Block a user