Skip to content

Instantly share code, notes, and snippets.

@jessieay
Created June 17, 2012 06:26
Show Gist options
  • Save jessieay/2943707 to your computer and use it in GitHub Desktop.
Save jessieay/2943707 to your computer and use it in GitHub Desktop.
RPN w one test not passing
class RPNCalculator
attr_accessor :calculator, :result, :subtotal, :mini_array
def initialize
@calculator = []
@mini_array = []
@result = 0
@subtotal = 0
end
def push(arg)
@calculator << arg
end
def plus
if @calculator.length > 2
@mini_array = @calculator.pop 2
@mini_array.each do |i|
@subtotal += i
end
@result = @subtotal
@calculator.push @subtotal
else
@mini_array = @calculator.pop 2
@subtotal = (@mini_array[0] + @mini_array[1])
@calculator.push @subtotal
@result = @calculator[0]
end
end
def minus
if @calculator.length > 2
@mini_array = @calculator.pop 2
@subtotal = @mini_array[-2] - @mini_array[-1]
@result = @subtotal
@calculator.push @subtotal
else
@calculator.push(@calculator[-2] - @calculator[-1])
@result = @calculator[-1]
end
end
def times
if @calculator.length > 2
@mini_array = @calculator.pop 2
@subtotal = @mini_array[0] * @mini_array[1]
@result = @subtotal
@calculator.push @subtotal
else
@mini_array = @calculator.pop 2
@subtotal = @mini_array[0] * @mini_array[1]
@calculator.push @subtotal
@result = @subtotal
end
end
def divide
if @calculator.length > 2
@mini_array = @calculator.pop 2
@subtotal = @mini_array[-2].to_f / @mini_array[-1]
@result = @subtotal
@calculator.push @subtotal
else
@calculator.push(@calculator[-2].to_f / @calculator[-1])
@result = @calculator[-1]
end
end
def value
@result
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment