范围数组的索引数组
红宝石的范围非常酷。
我最终得到这样的数组:
geneRanges = [(234..25), (500..510), (1640..1653)]
然后必须删除它们的一部分。为此我:
genePositions = geneRanges.collect {|range| range.entries }.flatten
=> [500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653]
它们被操纵,因此一些数字被排除在外,其他数字可能被添加。我最终可能会这样:
[505, 506, 507, 600, 601, 602, 603, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654]
如何将其转换回紧凑的范围数组?似乎反函数应该存在?我希望它能返回这样的东西:
[(505..507), (600..603), (1643..1654)]
谢谢!
没有找到相关结果
已邀请:
7 个回复
扭湘阀柿蹄
闯舱酮
一个很好的:
款去芳尾脊
执行此操作的结果是 [1..3,10..11,20..20,4..4] [1,2,3,10,11,20,4] [1..4,10..11,20..20] [“a”..“c”,“f”..“h”,“x”..“z”] [“a”,“b”,“c”,“f”,“g”,“h”,“x”,“y”,“z”] [“a”..“c”,“f”..“h”,“x”..“z”] [ “AA” .. “AF”] [“aa”,“ab”,“ac”,“ad”,“ae”,“af”] [ “AA” .. “AF”]
抚驰
以下是基准测试结果:
所有基准代码都经过调整以删除
以进行公平比较。
冕偷淮款
岭取
荆怖赡
对于未排序的数组,您可以预先分配它: