用红宝石做数学

时间:2015-07-29 13:33:50

标签: ruby math shoes

我正在为孩子们重新学习拼写和数学的学习游戏。我试图通过乘法,减法和除法运算符来扩展数学。

当进程停止很长时间时会出现问题,因为我不希望它返回负数。

简要流程说明: 所选运算符的两个数字是从范围(当前为0..9)随机生成的。计算执行,如果结果是负数,则整个过程再次运行。

问题当然只能通过减法和除法来实现。

来源:

我的问题?

是否有更优雅的方法来实现这些计算以避免结果通常是负数(可能通过预定义要用作input1和input2的数字)?

添加运行正常,但通过减法,它通常不会结束。

1 个答案:

答案 0 :(得分:1)

也许你应该做一些像这样的事情而不是那些东西:

  def compute(operator)
    input_1, input_2 = prepare_arguments(operator)
    result = case operator
    when "add"
      input_1 + input_2
    when "multiply"
      input_1 * input_2
    when "subtract"
      input_1 - input_2
    when "divide"
      input_1 / input_2
    end

    {result: result, operator: operator, input_1: input_1, input_2: input_2}
  end

  def prepare_arguments(operator)
    case operator
    when "subtract"
      [first_argument = rand(0..9), first_argument + rand(0..9)].reverse
    when "divide"
      [first_argument = rand(1..9), first_argument * rand(0..9)].reverse
    else
      [rand(0..9), rand(0..9)]
    end
  end

因此,如果你有一个运算符,它将得到正确的参数和计算结果。