From: Marko Schulz Date: 2002-03-19T10:01:13+09:00 Subject: Re: Wanted: slick rubyesqe algorithm On Tue, Mar 19, 2002 at 09:36:59AM +0900, David Corbin wrote: > Say I've got a list of Objects > > [ "AB","CD",alpha,"DE",beta,gamma,"FG","HI"] > > I'd like to "compress that", by concatenating adject Strings (but not > objects of any other type). The above example would yield > > [ "ABCD", alpha, "DE", beta, gamma, "FGHI"] > > Can anyone suggest a particular slick ruby-like solution to this? I don't consider it a slick solution, but it is the one I came up with: def stringCompress(arr) accu = "" newArr = [] stringStarted = false arr.each do |element| if element.type == String accu += element stringStarted = true else if stringStarted newArr << accu stringStarted = false accu = "" end newArr << element end end if stringStarted newArr << accu end return newArr end stringCompress([ "AB", "CD", :alpha, "DE", :beta, :gamma, "FG", "HI"]) #-> ["ABCD", :alpha, "DE", :beta, :gamma, "FGHI"] -- marko schulz