我找不到实现以下目标的方法:
- 给定一个整数数组
- 每隔一个数字相乘
- 对所有整数求和
我尝试使用 Enumerble#each_slice
但仍然不知道如何在修改后的数组切片部分上调用 Array#sum
:
input = [6, 8, 2, 4, 4, 4, 5, 5, 0]
input.each_slice(2) {|slice| p slice }
#=>
[6, 8]
[2, 4]
[4, 4]
[5, 5]
[0]
现在我想乘以每对中的每个最后一个元素(可以在乘法之前应用 condition):
[6, 8] => 8 *2
[2, 4] => 4 *2
[4, 4] => 4 *2
[5, 5] => 5 *2
[0]
并将初始数组的所有数字与其相乘的第二个数字相加:
[6, 16, 2, 8, 4, 8, 5, 10, 0].sum
有什么想法吗? 谢谢。
最佳答案
另一个选项使用 Enumerable#each_slice和 Enumerable#sum ,这需要一个 block :
input.each_slice(2).sum { |a, b| a + 2* (b || 0) }
关于arrays - Ruby - 如何切片数组并根据条件对其元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460707/