如何评估随机数学运算符?

时间:2012-02-15 17:35:21

标签: ruby operators expression

我对Ruby和编程都很陌生。 我一直试图整理一个随机创建数学问题的小脚本并将其解决,但是我在生成随机数学运算符时遇到了麻烦。

到目前为止我的脚本:

num = (1..10).to_a

num1 = num.shuffle[0]
num2 = num.shuffle[0]

op = %w{+ - = /} 
op1 = op.sample

puts w = "#{num1} #{op1} #{num2}"

puts "Your answer is:"
answer = gets()

solution = num1 + "what do I put here??" + num2

if answer.to_i == solution
  puts "Correct! The answer is #{solution}"
else
  puts "Incorrect, the answer is #{solution}"
end

我设法选择一个随机运算符,但不能在解决方案中使用它,因为它是一个字符串。

2 个答案:

答案 0 :(得分:5)

为什么不使用符号,并将其发送到带参数的操作数?

5.send(:+, 10)

例如:

> syms = [:+, :-, :*, :/]
=> [:+, :-, :*, :/]
> num1.send(syms.sample, num2)
=> 50

为什么你使用sample作为操作,而不是数字?

答案 1 :(得分:2)

你正在寻找的神奇词是“eval”。一旦[抱歉,在我的办公桌上被打断]一旦你有了字符串,你只需要评估它以获得结果:

expr = "42"+"+"+"54"
result = eval(expr)

irb(main):006:0> expr = "42"+"+"+"54"
=> "42+54"
irb(main):007:0> result = eval(expr)
=> 96