Les gammes en ruby sont plutôt cool. je me retrouve avec des tableaux comme celui-ci:Tableau d'index au tableau de gammes
geneRanges = [(234..25), (500..510), (1640..1653)]
et ont ensuite enlever les restes d'entre eux. Pour cela, je:
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]
Ils sont manipulés, donc certains nombres sont exclus et d'autres peuvent être ajoutés. Je peux finir avec ceci:
[505, 506, 507, 600, 601, 602, 603, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654]
Comment puis-je convertir ce nouveau dans une gamme compacte de gammes? Il semble que la fonction inverse devrait exister? Je pense qu'elle doit retourner quelque chose comme ceci:
[(505..507), (600..603), (1643..1654)]
Merci!
plus sur des solutions: http://stackoverflow.com/questions/12360108 – tokland
'(234..25)' est un plage invalide. '(234..25) .to_a => []'. –