Skip to content
/ rpn Public

A simple Reverse Polish Notation calculator in Ruby

Notifications You must be signed in to change notification settings

txus/rpn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#Reverse Polish Notation calculator

A simple implementation of a RPN (also known as postfix notation) calculator.

In a nutshell, this notation consists of operands followed by their operators. As opposed to express an operation like this...

(3 + 4) * 7 - 1

...in reverse Polish notation it would look like this:

7 3 4 + * 1 -

It basically works like a stack in which you push operands until you find an operator; given an arity n, you evaluate this operator with n numbers from the stack, and substitute them for their result. Check out the Wikipedia article to learn more about this notation.

##Install

gem install rpn

##Usage

Just require it in your Gemfile:

gem 'rpn'

Note: If you are not using Bundler, you should require 'rpn' manually.

Now you have to initialize a calculator. You can provide a custom n arity (the number of operands that will get evaluated by each operator). Default arity is 2. You can also provide the delimiter the parser will use (will be ' ' by default).

my_rpn = RPN::Calculator.new # => will use the defaults
my_rpn.solve "7 3 4 + * 1 -"
# => 48

For now, it supports the following operators:

+ - * / ^

##Contribute!

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add specs for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. If you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull.
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2011 Josep M. Bach. See LICENSE for details.

About

A simple Reverse Polish Notation calculator in Ruby

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages