arrays - Ruby - 如何切片数组并根据条件对其元素求和

标签 arrays ruby algorithm

我找不到实现以下目标的方法:

  • 给定一个整数数组
  • 每隔一个数字相乘
  • 对所有整数求和

我尝试使用 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_sliceEnumerable#sum ,这需要一个 block :

input.each_slice(2).sum { |a, b| a + 2* (b || 0) }

关于arrays - Ruby - 如何切片数组并根据条件对其元素求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56460707/

相关文章:

javascript - 用数组检测运动范围

C - 创建具有与输入相关的数组数量的结构

ruby-on-rails - Rails 4 - thinking-sphinx 日期范围

java - 迷宫递归解决StackOverflow报错

java - 用分隔符连接字符串

php - 用于日历的 mySQL 的 while 循环中的 json_encode() 数组

Javascript - "history.pushState"将常规 "&"替换为 "&"。如何避免?

ruby - 从哈希值的 ruby​​ 数组中获取前 n 个元素

algorithm - 递归查找大 O 时间复杂度

Javafx 2D 迷宫标准解决方案不起作用