“插值”一个数组(在现有数据之间添加新元素)

时间:2013-10-14 12:40:03

标签: ruby

我似乎无法找到改变这个

的红宝石方式
[0, 1, 2, 3]

[0, 0.5, 1, 1.5, 2, 2.5, 3]

例如,根据应用某些规则的现有元素插入新元素。

编辑:我问的是一般情况,不一定是0.5增量。比如,当元素不连续时:

[1, 3, 12] => [1, 2, 3, 7.5, 12]

所以接受的答案在这里是完美的,谢谢。

1 个答案:

答案 0 :(得分:4)

arr = [0, 1, 2, 3]

def rule(x, y)
  (x + y) / 2.0
end

arr.each_cons(2).flat_map{|x, y| [x, rule(x, y), y]} # => [0, 0.5, 1, 1, 1.5, 2, 2, 2.5, 3]