Ho una serie di numeri uniq. Così: [1,2,3,4,7,8,10,12]. Può essere non ordinato. Che cosa ho bisogno è quello di ottenere intevals per questa matrice:Attività rubino: unione di numeri a intervalli
intervals_for [1,2,3,4,7,8,10,12]
#=> "1-4, 7-8, 10,12"
ho la mia propria soluzione:
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
Ma credo che da qualche parte qui è la soluzione più pulita
Ne ho bisogno per unirmi agli anni insieme. Ho un numero di anni e voglio compattarli in questo modo. Ad esempio: 'Pedro Yanoviches (1985-1994, 1999-2010)' – fl00r
possibile duplicato di [Matrice di indici a serie di intervalli] (http://stackoverflow.com/questions/3728660/array-of-indexes-to-array -of-range) –
Tema molto vicino ma un po 'diverso. Comunque è utile anche. Grazie – fl00r