Robert Klemme <bob.news / gmx.net> wrote: > > Btw, here's another funny idea: > > ----------------- > data = [3, 4, 5, 6, 7, 8, 9, 15, 38, 39, 40, 41, 6789, 6790, 9998, 9999] > ranges = [] > > data.inject(0) {|s,x| s | (1 << x)}.to_s(2).reverse!.scan(/1+/) do |m| > s = $`.length > ranges << (s .. (s + m.length - 1)) > end > > puts ranges Nice :) martin