1
1
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:
Divlo
2021-06-09 20:31:45 +02:00
committed by GitHub
parent 7aa12f313e
commit 677a55a9d8
256 changed files with 16829 additions and 1881 deletions

View File

@ -22,4 +22,4 @@ You may assume that there won't be exceptional situations (like stack underflow
## Examples
See the `input-output.json` file for examples of input/output.
See the `test` folder for examples of input/output.

View File

@ -1,34 +0,0 @@
[
{
"input": [""],
"output": 0
},
{
"input": ["3"],
"output": 3
},
{
"input": ["3.5"],
"output": 3.5
},
{
"input": ["1 3 +"],
"output": 4
},
{
"input": ["1 3 *"],
"output": 3
},
{
"input": ["1 3 -"],
"output": -2
},
{
"input": ["4 2 /"],
"output": 2
},
{
"input": ["5 3 + 12 8 + * 10 /"],
"output": 16
}
]

View File

@ -1,5 +0,0 @@
# javascript-solution - reverse-polish-notation
Programming language : JavaScript
Created by [@Divlo](https://github.com/Divlo) on 29 September 2020.

View File

@ -1,31 +0,0 @@
const operations = {
'+': (n1, n2) => n1 + n2,
'-': (n1, n2) => n1 - n2,
'*': (n1, n2) => n1 * n2,
'/': (n1, n2) => n1 / n2
}
function solution(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()
}
module.exports = solution

View File

@ -0,0 +1,3 @@
# reverse-polish-notation/javascript/function
Created by [@Divlo](https://github.com/Divlo) on 6 June 2021.

View File

@ -0,0 +1,3 @@
{
"type": "module"
}

View File

@ -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()
}

View File

@ -0,0 +1 @@
3

View File

@ -0,0 +1 @@
3

View File

@ -0,0 +1 @@
3.5

View File

@ -0,0 +1 @@
3.5

View File

@ -0,0 +1 @@
1 3 +

View File

@ -0,0 +1 @@
4

View File

@ -0,0 +1 @@
1 3 *

View File

@ -0,0 +1 @@
3

View File

@ -0,0 +1 @@
1 3 -

View File

@ -0,0 +1 @@
-2

View File

@ -0,0 +1 @@
4 2 /

View File

@ -0,0 +1 @@
2

View File

@ -0,0 +1 @@
5 3 + 12 8 + * 10 /

View File

@ -0,0 +1 @@
16