Замена последовательных чисел на черту между первым и последним в диапазоне
# Replacing consecutive numbers with dash between first and last in a range
def range_extraction(list)
list.chunk_while {|i, j| i+1 == j }.map do |a|
if a.size > 2
a.first.to_s + "-" + a.last.to_s
else
a
end
end.join(',')
end
print range_extraction([-3,-2,-1,2,10,15,16,18,19,20]) # "-3--1,2,10,15,16,18-20"
Mackerel