Массив индексов к массиву диапазонов

Диапазоны в рубине - это круто. geneRanges = [(234..25), (500..510), (1640..1653)] И впоследствии придется удалить их биты. Для этого I: genePositions = ...

Диапазоны в рубине - это круто. geneRanges = [(234..25), (500..510), (1640..1653)] И впоследствии придется удалить их биты. Для этого I: genePositions = ...

Диапазоны в рубине - это круто. Я получаю такие массивы:

geneRanges = [(234..25), (500..510), (1640..1653)]

И впоследствии мне приходится удалять из них биты. Для этого I:

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)]

Спасибо!

10
задан Andrew Grimm 24 December 2011 в 05:17
поделиться