remove rpn test

This commit is contained in:
corey 2023-11-10 05:42:04 -06:00
parent c82cfc3b0b
commit 7b72e87df5

View File

@ -1,91 +0,0 @@
#!/usr/bin/ruby
def evalrpn(str)
# puts "eval '#{str}'"
s=[]
str.split.each do|t|
case t
when /[0-9]/
s+=[t.to_i]
when /[-+\*\/]/
i1=s.pop.to_i
i2=s.pop.to_i
r=0
case t
when '+'
r=i2+i1
when '-'
r=i2-i1
when '*'
r=i2*i1
when '/'
r=i2/i1
end
s.push r
end
end
# puts "s: '#{s}'"
# puts "o: '#{o}'"
s.pop
end
def i2r(str)
# puts "i2r '#{str}'"
pre={
'(' => 5,
')' => 5,
'+' => 10,
'-' => 10,
'*' => 20,
'/' => 20,
}
o=[]
s=[]
str.split.each do |t|
case t
when /[0-9]/
s+=[t.to_i]
when /[-+\*\/]/
while o.size>0&&pre[o[-1]]>=pre[t]
s.push o.pop
end
o+=[t]
when '('
o.push t
when ')'
while o[-1]!='('
s.push o.pop
end
o.pop
end
end
while o.size>0
s.push o.pop
end
# puts "s: '#{s}'"
# puts "o: '#{o}'"
s.join' '
end
def dotest(str)
print "'#{str}' => "
res=i2r str
print "'#{res}' => "
print "'#{evalrpn res}'\n"
end
def main
dotest '1 + 2 + 3'
dotest '1 + 2 - 3'
dotest '1 - 2 + 3'
dotest '2 * 5 - 3'
dotest '2 - 5 * 3'
dotest '21 * 2 / 3'
dotest '21 / 2 * 3'
dotest '2 * ( 1 + 2 )'
end
main