Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def calc numbers, ops
- expression = numbers.zip(ops).flatten.compact
- # need some bodmas action
- while expression.include?(:/)
- result = [expression[expression.index(:/) - 1].to_f,expression[expression.index(:/) + 1].to_f].inject :/
- expression.delete(expression[expression.index(:/) - 1])
- expression.delete(expression[expression.index(:/) + 1])
- expression[expression.index(:/)] = result
- end
- while expression.include?(:*)
- result = [expression[expression.index(:*) - 1].to_f,expression[expression.index(:*) + 1].to_f].inject :*
- expression.delete(expression[expression.index(:*) - 1])
- expression.delete(expression[expression.index(:*) + 1])
- expression[expression.index(:*)] = result
- end
- while expression.include?(:+)
- result = [expression[expression.index(:+) - 1].to_f,expression[expression.index(:+) + 1].to_f].inject :+
- expression.delete(expression[expression.index(:+) - 1])
- expression.delete(expression[expression.index(:+) + 1])
- expression[expression.index(:+)] = result
- end
- while expression.include?(:-)
- result = [expression[expression.index(:-) - 1].to_f,expression[expression.index(:-) + 1].to_f].inject :-
- expression.delete(expression[expression.index(:-) - 1])
- expression.delete(expression[expression.index(:-) + 1])
- expression[expression.index(:-)] = result
- end
- result
- end
- p calc [1, 2, 3], [:/, :/]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement