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