Как оценить случайный математический оператор? - PullRequest
0 голосов
/ 15 февраля 2012

Я новичок как в 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 ]

5 голосов
/ 15 февраля 2012

Почему бы не использовать символы и отправить их операнду с аргументом?

5.send(:+, 10)

Например:

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

Почему вы использовали sample для операций, а не цифры?

2 голосов
/ 15 февраля 2012

Волшебное слово, которое вы ищете, это " eval ".Однажды [извините, меня прервали за столом] Как только у вас есть строка, вы просто проверяете ее, чтобы получить результат:

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

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