用ruby做数学

  • 本文关键字:ruby ruby math shoes
  • 更新时间 :
  • 英文 :


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

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

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

这个问题当然只出现在减法和除法中。

来源:

  • 循环代码:https://github.com/sebastjan-hribar/abc123/blob/master/lib/abc123.rb

  • 中的第82至85行
  • 助手:https://github.com/sebastjan-hribar/abc123/blob/master/lib/abc123/helpers_math.rb

我的问题吗?

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

加法运算运行正常,但对于减法运算,它经常循环到0/0结束

也许你应该这样做,而不是while之类的东西:

  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

如果你有一个操作符,它将得到正确的参数和计算结果

相关内容

  • 没有找到相关文章

最新更新