arithmetic-expression-calculator
v1.0.0
Published
calculator of arithmetic expression by using reverse polish notation
Downloads
3
Readme
Arithmetic Expressions Calculator
Short Description
Create a program to calculate arithmetic expressions using TDD approach.
Topics
- Unit Testing
- TDD
- Testing tools
Requirements
Create a programm to calculate arithmetic expression that is provided as string. It should have the following functionality:
- Arithmetic expression parser. That takes expression string written in infix notation as an input and converts it to Reverse Polish Notation.
const expression = "2 * ( 3 + 6 / 2 ) / 4" convertToRPN(expression) // "2 3 6 2 / + * 4 /"
- Reverse Polish Notation calculator. It takes expression string written in RPN as an input and calculates it respecting priority.
const expression = "2 3 6 2 / + * 4 /" calculateRPNExpression(expression) // 3
Note
The following arthmetic operations are allowed: +, -, *, /
. It shoud work with positive numbers. Invalid expressions should cause error.
Both modules should validate parameters and cause custom errors if necessary.
- Every input string has numbers, operators and parentheses separated by space
- Accept only strings as parameters (TypeError)
- Check expression for the correctness(invalid parentheses, double operators, restricted simbols) (BadSequenceError)
- Calculating
0 / 0
should have triggered an exception, not given resultNaN
.
Must be used TDD approach, which means that every test must be written before implementing the functionality.
Please use the following flow:
- Write tests
- Run tests
- Commit
- Make tests pass
- Commit
- Repeat from 1
Advanced Requirements
- Use reporter tools to achive 100% code coverage.
- Publish modules to npm.
- Write documentation for each module.
- Update program to evaluate expressions from console or file line by line using
readline
. Example:node index.js < expressions.txt
.
// expressions.txt
5 + 8 * 3 / 2
(5 + 8) * 3 / 2
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13
//...
```