Tengo una serie de números únicos. De esta manera: [1,2,3,4,7,8,10,12]. Puede ser sin clasificar. Lo que necesito es conseguir intevals para esta matriz:Ruby task: unión de números a intervalos
intervals_for [1,2,3,4,7,8,10,12]
#=> "1-4, 7-8, 10,12"
Tengo mi propia solución:
def intervals_for(array)
array.sort!
new_array = []
array.each do |a|
if new_array.last and a == new_array.last.last+1
new_array.last << a
else
new_array << [a]
end
end
new_array.map{|a| a.size > 1 ? "#{a.first}-#{a.last}" : a.first}.join(", ")
end
Pero creo que por aquí es la solución más limpia
Lo necesito para unirme años. Tengo varios años y quiero compactarlos de esta manera. Me gusta: 'Pedro Yanoviches (1985-1994, 1999-2010)' – fl00r
posible duplicado de [Matriz de índices a una matriz de rangos] (http://stackoverflow.com/questions/3728660/array-of-indexes-to-array -of-ranges) –
Tema muy cercano pero un poco diferente. De todos modos, es útil también. Gracias – fl00r