Git Product home page Git Product logo

rpn-calculator's Introduction

Reverse Polish notation calulator

Command-line based RPN calculator

http://en.wikipedia.org/wiki/Reverse_Polish_notation

Intro

The calculator waits for user input and expects to receive strings containing whitespace separated lists of numbers and operators.

Numbers are pushed on to the stack. Operators operate on numbers that are on the stack.

Available operators are +, -, *, /, sqrt, pow, undo, clear

Operators pop their parameters off the stack, and push their results back onto the stack.

  • The clear operator removes all items from the stack.

  • The undo operator undoes the previous operation. "undo undo" will undo the previous two operations.

  • sqrt performs a square root on the top item from the stack

  • pow returns the top item from the stack power 2

  • The +, -, *, / operators perform addition, subtraction, multiplication and division respectively on the top two items from the stack.

After processing an input string, the calculator displays the current contents of the stack as a space-separated list. Numbers are stored on the stack to at least 15 decimal places of precision, but displayed to 10 decimal places (or less if it causes no loss of precision).

If an operator cannot find a sufficient number of parameters on the stack, a warning is displayed:

operator <operator> (position: <pos>): insufficient parameters

After displaying the warning, all further processing of the string terminates and the current state of the stack is displayed.

Requirements

  • Implemented and tested using Java 7

  • Tests require JUnit and Mockito

  • Project dependencies and compiling managed by Maven

Compile, Test, Run and Packaging

  • Compile: mvn compile

  • Test: mvn test

  • Run: mvn exec:java

  • Packaging: mvn package, compiled jar in target/ folder

rpn-calculator's People

Contributors

gvnn avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.