【问题标题】:"Interpolate" an array (add new elements between existing) [closed]“插值”一个数组(在现有元素之间添加新元素)[关闭]
【发布时间】:2013-10-22 00:47:26
【问题描述】:

我似乎找不到一种 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]

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

【问题讨论】:

  • 不可能有适合所有可能需要的内置方法。有时你只需要卷起袖子去实施。你能用非红宝石的方式来做吗?

标签: ruby


【解决方案1】:
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]

【讨论】:

  • arr.each_cons(2).flat_map{ |x, y| [x, rule(x, y), y]}
  • @Stefan:好的,谢谢!
猜你喜欢
  • 2017-11-30
  • 2022-10-04
  • 1970-01-01
  • 2014-12-03
  • 2016-12-12
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多