0.0.1 • Published 5 years ago

@tici/rpn v0.0.1

Weekly downloads
-
License
GPL-3.0-or-later
Repository
-
Last release
5 years ago

Reverse Polish notation

Reverse Polish notation (RPN), also known as Polish postfix notation or simply postfix notation, is a mathematical notation in which operators follow their operands. It does not need any parentheses as long as each operator has a fixed number of operands. The description "Polish" refers to the nationality of logician Jan Łukasiewicz, who invented this notation in 1924.

Postfix evaluation algorithm

for each token in the postfix expression:
  if token is an operator:
    operand_2 ← pop from the stack
    operand_1 ← pop from the stack
    result ← evaluate token with operand_1 and operand_2
    push result back onto the stack
  else if token is an operand:
    push token onto the stack
result ← pop from the stack

To get started, install the required packages.

yarn
yarn start

Use locally

rpn [path-to-file]

Test driven development

A collection of unit tests have been provided. To run the tests, run

yarn test

Watching mode

yarn test:watch

Example

Input

b1 b2 +,2 b2 3 * -, ,+
a1     ,5         , ,7 2 /
c2 3 * ,1 2       , ,5 1 2 + 4 * + 3 -

Output:

-8,-13,0,ERR!
-8,5,0,3.5
0,ERR!,0,14

List of task for build a csv parser for a spreadsheet:

  • write in node and without dependencies
  • each cell in the input csv includes a postfix notation (en.wikipedia.org/wiki/Reverse_Polish_notation)
  • numbers and operators are separated by one or more spaces
  • a cell can refer to another cell via letter number notation (A2, B6 etc)
  • letters refer to columns, numbers to rows
  • support for + - * / math operators
  • cells that generate an error will print ERR! but all other cells still do the deed
  • the app should print the output to stdout (no need to save new file)