用 ruby 做数学
doing math with ruby
我正在重构一款供孩子们学习拼写和数学的学习游戏。我正在尝试通过乘法、减法和除法运算符来扩展数学。
这个问题出现在进程循环很长时间的时候,因为我不希望它return一个负数。
简要流程说明:
所选运算符的两个数字是从范围(当前为 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 的数字)?
加法运行正常,但减法经常循环w/o结束。
也许你应该做这样的事情而不是 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
因此,如果您有一个运算符,它将产生正确的参数和计算结果。
我正在重构一款供孩子们学习拼写和数学的学习游戏。我正在尝试通过乘法、减法和除法运算符来扩展数学。
这个问题出现在进程循环很长时间的时候,因为我不希望它return一个负数。
简要流程说明: 所选运算符的两个数字是从范围(当前为 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 的数字)?
加法运行正常,但减法经常循环w/o结束。
也许你应该做这样的事情而不是 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
因此,如果您有一个运算符,它将产生正确的参数和计算结果。