有没有一种很好的方法来计算ruby中的范围元素之和
co计算范围总和的好方法是什么?
输入
4..10
产量
4 + 5 + 6 + 7 + 8 + 9 + 10 = 49
您可以在Range对象上使用Enumerable
方法,在这种情况下使用Enumerable#inject
:
(4..10).inject(:+) #=> 49
现在,在Ruby 2.4.0中,您可以使用Enumerable#sum
(4..10).sum #=> 49
rng = 4..10 rng.size * (rng.first + rng.last)/2 #=> 49
这只是算术级数值之和的公式。 另一个例子:
arr = (1..10).step(3).to_a #=> [1, 4, 7, 10] arr.size * (arr.first + arr.last)/2 #=> 22
使用Enumerable #reduce :
range.reduce(0, :+)
请注意,如果要折叠的范围为空,则需要0
作为标识值,否则您将得到nil
作为结果。
(4..10).to_a * " + " + " = 15" #=> 4 + 5 + 6 + 7 + 8 + 9 + 10 = 15
🙂
是! 🙂
(1..5).to_a.inject(:+)
并用于视觉表现
(1..5).to_a.join("+")+"="+(1..5).inject(:+).to_s