Ruby:组合数组值

标签 ruby arrays sum

我有一个指示坐标值的数组,如下所示:

cells = [ [0,0], [0,1] ]

数组中的每个数组都是一个X和Y值。因此,如果我想将其右移,则每个单元格上都是 X+1。我可以像这样将其表示为一个单元格:

delta = [1,0]

现在,我想做的是将该值合并到每个单元格中,以便每个单元格的 X 值与 delta 值相加,因此在这种情况下,最终输出应该是:

new_cells = [ [1,0], [1,1] ]

这是迄今为止我能想到的最好的,它看起来真的很重:

cells = [[0,0],[0,1]]
delta = [1,0]
cells.each do |cell|
  cell[0] = cell[0] + delta[0]
  cell[1] = cell[1] + delta[1]
end
# Now cells = [[1,0],[1,1]]

是否有一种更简洁的单行方法可以将数组加到数组链中的每个数组上,或者上述方法是否是该问题的最佳解决方案?

最佳答案

我认为您最好的解决方案是认识到单元格和增量是一种不同的数据类型,如果它不是数组,您可以更清楚地对其进行操作:

Cell = Struct.new(:x, :y) do 
  def + other
    Cell.new(self.x + other.x, self.y + other.y)
  end
end

# cells is some array of Cell objects
# delta is some Cell object

cells.map! {|cell| cell + delta}

关于Ruby:组合数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11926011/

相关文章:

ruby - undef 的实际应用

PHP 和 MySQL - 哪种变量类型最适合该数组?

javascript - JavaScript 中的 eval 方法

java - 如何将整数数组传递给需要 `Array<T>` 的方法?

mysql - 如何在mysql中找到组的总和并找到权重?

ruby - 如何在 Ruby 中分隔数组?

ruby - Ruby/Sinatra 中的作用域

ruby - 如何对字符串中的所有元音进行散列?

R 对 n 列中的每 n 行求和

多个 INNER JOIN 上的 SQL SUM