From: Harry Kakueki Date: 2010-09-21T15:18:59+09:00 Subject: Re: An elegant way... On Tue, Sep 21, 2010 at 2:17 PM, Harry Kakueki wrote: > On Tue, Sep 21, 2010 at 12:51 PM, Harry Kakueki wrote: >> > > A slightly shorter but still unreadable version :-) > > r = [ '1', '2', '3', '4', '6', '7', '9', 'S1', 'S2' ] > s = ('1'..'20').to_a + ('S1'..'S5').to_a > > p [].tap{|m| s.each {|x| m << (r.include?(x) ? x : "*")}}.join(" > ").split("*").map{|y| y.strip.split(" ")}.select{|z| z.size > > 0}.map{|w| "#{w[0]}-#{w[-1]}"} > > #> ["1-4", "6-7", "9-9", "S1-S2"] > r = [ '1', '2', '3','4', '6', '7', '9', 'S1', 'S2' ] s = ('1'..'20').to_a + ('S1'..'S5').to_a p [].tap{|m| s.each{|x| m << (r.include?(x) ? x : "*")}}.join(" ").split("*").map{|y| y.strip.split(" ")}.select{|z| z.size > 0}.map{|w| (w.size>1 ? "#{w[0]}-#{w[-1]}" : "#{w[0]}")} #> ["1-4", "6-7", "9", "S1-S2"] I'll shut up, now. Harry