Advertisement
Guest User

Untitled

a guest
Nov 1st, 2016
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.40 KB | None | 0 0
  1.  
  2. def calc numbers, ops
  3.   expression = numbers.zip(ops).flatten.compact
  4.   # need some bodmas action
  5.  
  6.   while expression.include?(:/)
  7.     result = [expression[expression.index(:/) - 1].to_f,expression[expression.index(:/) + 1].to_f].inject :/
  8.     expression.delete(expression[expression.index(:/) - 1])
  9.     expression.delete(expression[expression.index(:/) + 1])
  10.     expression[expression.index(:/)] = result
  11.   end
  12.  
  13.   while expression.include?(:*)
  14.     result = [expression[expression.index(:*) - 1].to_f,expression[expression.index(:*) + 1].to_f].inject :*
  15.     expression.delete(expression[expression.index(:*) - 1])
  16.     expression.delete(expression[expression.index(:*) + 1])
  17.     expression[expression.index(:*)] = result
  18.   end
  19.  
  20.   while expression.include?(:+)
  21.     result = [expression[expression.index(:+) - 1].to_f,expression[expression.index(:+) + 1].to_f].inject :+
  22.     expression.delete(expression[expression.index(:+) - 1])
  23.     expression.delete(expression[expression.index(:+) + 1])
  24.     expression[expression.index(:+)] = result
  25.   end
  26.  
  27.   while expression.include?(:-)
  28.     result = [expression[expression.index(:-) - 1].to_f,expression[expression.index(:-) + 1].to_f].inject :-
  29.     expression.delete(expression[expression.index(:-) - 1])
  30.     expression.delete(expression[expression.index(:-) + 1])
  31.     expression[expression.index(:-)] = result
  32.   end
  33.   result
  34. end
  35.  
  36.  
  37. p calc [1, 2, 3], [:/, :/]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement