From: Niklas Frykholm Date: 2002-01-21T07:46:54+09:00 Subject: Re: Coding challenge :-) [David Alan Black]: > Hello -- > > I've posted a little coding challenge to the Ruby Garden Wiki: > > http://www.rubygarden.org/ruby?CodingChallenge0001 Sorry, I sent the wrong version. It should be: def parse_to_array numbers = {} split(',').each {|interval| if interval[/([-\d]+)-([-\d]+)/] $1.to_i.upto($2.to_i) {|i| numbers[i] = 1} else numbers[interval.to_i] = 1 end } numbers.keys.sort end def expanded parse_to_array.join ',' end def compacted intervals = [] parse_to_array.each {|num| if intervals[0] && num == intervals[-1][1].succ intervals[-1][1] = num else intervals << [num,num] end } intervals.map {|i1, i2| "#{i1}" + (i1==i2 ? "" : "-#{i2}")}.join ',' end // Niklas