Class: RpnCalculator::RPN
- Inherits:
-
Object
- Object
- RpnCalculator::RPN
- Defined in:
- lib/rpn_calculator/rpn.rb
Instance Attribute Summary collapse
-
#numbers ⇒ Object
Returns the value of attribute numbers.
-
#operators ⇒ Object
Returns the value of attribute operators.
Class Method Summary collapse
Instance Method Summary collapse
- #evaluate ⇒ Object
-
#initialize(numbers, operators) ⇒ RPN
constructor
A new instance of RPN.
Constructor Details
#initialize(numbers, operators) ⇒ RPN
Returns a new instance of RPN.
3 4 5 6 7 8 9 10 |
# File 'lib/rpn_calculator/rpn.rb', line 3 def initialize(numbers,operators) @numbers = numbers @operators = operators raise ArgumentError, 'A minimum of two numbers is required' if numbers.count < 2 raise ArgumentError, 'The number of operators must be exactly one less than number of numbers' unless (numbers.count - 1) == operators.count raise ArgumentError, 'Only valid numbers allowed' unless are_numbers? raise ArgumentError, 'Only valid numbers allowed' unless are_operators? end |
Instance Attribute Details
#numbers ⇒ Object
Returns the value of attribute numbers.
11 12 13 |
# File 'lib/rpn_calculator/rpn.rb', line 11 def numbers @numbers end |
#operators ⇒ Object
Returns the value of attribute operators.
11 12 13 |
# File 'lib/rpn_calculator/rpn.rb', line 11 def operators @operators end |
Class Method Details
.calculate(str) ⇒ Object
14 |
# File 'lib/rpn_calculator/rpn.rb', line 14 def self.calculate(str) RPNParser.parse(str) end |
.evaluate(args) ⇒ Object
13 |
# File 'lib/rpn_calculator/rpn.rb', line 13 def self.evaluate(args) new(args[0],args[1]).evaluate end |
Instance Method Details
#evaluate ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/rpn_calculator/rpn.rb', line 15 def evaluate evaluated = numbers.shift while numbers.count > 0 evaluated = Float(evaluated).send(operators.shift,Float(numbers.shift)) end return evaluated end |