Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #parsing math
- input = gets.chop
- operators=["+","-","*","/"]
- brackets_count = input.count '('
- if brackets_count > 0
- end
- numbers=['']
- buffer=[]
- available=0
- ncount=0
- operators_in=[]
- @out=[]
- for i in 0...input.size
- unless ('0'..'9')===input[i] or input[i]=='.'
- numbers << ''
- @out[ncount]=[] unless @out[ncount]
- @out[ncount]<<input[i]
- ncount+=1
- else
- numbers[ncount]<<input[i]
- @out[ncount]=[] unless @out[ncount]
- @out[ncount][1]=''unless @out[ncount][1]
- @out[ncount][1]<<input[i]
- end
- end
- numbers.size.times do |i|
- numbers[i]=numbers[i].to_i
- end
- @out = @out.inject:+
- for i in 0...@out.size
- if @out[i]==nil
- @out.delete_at i
- end
- end
- @out = @out.map do |str|
- if ('0'...'9')===str[0] then
- str=str.to_f
- elsif not operators.index(str)
- str=nil
- end
- str
- end
- @out.delete nil
- p @out
- ###part 2
- if operators.index(@out[0])
- x=@out[1].to_s
- x.insert(0,@out[0])
- x=x.to_f
- end
- while @out[2].class==Float
- x=@out[0].method(@out[1]).call(@out[2])
- @out[0]=x
- @out.slice! 1..2
- end
- p @out
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement