Ich habe eine Reihe von uniq-Nummern. So: [1,2,3,4,7,8,10,12]. Es kann unsortiert werden. Was ich brauche, ist intevals für dieses Array zu erhalten:Ruby-Task: Nummern zu Intervallen verbinden
intervals_for [1,2,3,4,7,8,10,12]
#=> "1-4, 7-8, 10,12"
ich meine eigene Lösung haben:
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
Aber ich denke, hier irgendwo mehr saubere Lösung
Ich brauche es für die Jahre zusammen zu verbinden. Ich habe eine Anzahl von Jahren und möchte sie auf diese Weise verdichten. Wie: 'Pedro Yanoviches (1985-1994, 1999-2010)' – fl00r
mögliches Duplikat von [Array von Indizes zu Array von Bereichen] (http://stackoverflow.com/questions/3728660/array-of-indexes-to-array -of-ranges) –
Sehr nahes Thema, aber ein bisschen anders. Jedenfalls ist es auch hilfreich. Danke – fl00r