Tôi có một dãy số uniq. Như thế này: [1,2,3,4,7,8,10,12]. Nó có thể được phân loại. Những gì tôi cần là để có được intevals cho mảng này:Tác vụ Ruby: nối các số vào khoảng thời gian
intervals_for [1,2,3,4,7,8,10,12]
#=> "1-4, 7-8, 10,12"
tôi đã có giải pháp của riêng tôi:
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
Nhưng tôi nghĩ rằng ở đâu đó ở đây là giải pháp sạch hơn
Tôi cần nó để tham gia các năm với nhau. Tôi có số năm và tôi muốn thu gọn chúng theo cách này. Giống như: 'Pedro Yanoviches (1985-1994, 1999-2010)' – fl00r
có thể trùng lặp của [Mảng chỉ mục cho mảng phạm vi] (http://stackoverflow.com/questions/3728660/array-of-indexes-to-array phạm vi -of) –
Chủ đề rất gần nhưng có một chút khác biệt. Dù sao nó cũng hữu ích. Cảm ơn bạn – fl00r