ast*_*nic 0 ruby arrays algorithm
我有一个稀疏数组,例如:
rare = [[0,1], [2,3], [4,5], [7,8]]
Run Code Online (Sandbox Code Playgroud)
我想用这些数据绘制图表,每对都是点坐标.如你所见,我没有x = 1,x = 3,x = 5,x = 6的分数
我想用以前的值填充数组,所以对于上面的例子,我将得到:
filled = [[0,1], [1,1], [2,3], [3,3], [4,5], [5,5], [6,5], [7,8]
Run Code Online (Sandbox Code Playgroud)
如您所见,为了计算y值,我只需使用我使用的最后一个y值.
完成此任务的最佳方法是什么?
Range.new(*rare.transpose.first.sort.values_at(0,-1)).inject([]){|a,i|
a<<[i, Hash[rare][i] || a.last.last]
}
Run Code Online (Sandbox Code Playgroud)
分步说明:
rare.transpose.first.sort.values_at(0,-1)
找到min和max x
([0,7]
在你的例子中)Range.new()
从中得出一个范围(0..7
)inject
遍历范围和每个x
返回对[x,y]
,其中y
:
y
来自输入数组,在哪里定义y
来自先前评估的对,哪里没有注意:以下是查找min和max x的其他一些方法:
[:min,:max].map{|m| Hash[rare].keys.send m}
rare.map{|el| el.first}.minmax # Ruby 1.9, by steenslag
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1168 次 |
最近记录: |