From: Martin DeMello Date: 2005-08-05T14:41:07+09:00 Subject: Re: algorithm help Robert Klemme 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