From: joe chesak Date: 2010-03-26T05:33:56+09:00 Subject: All contiguous subsets --001636b2be3f2e23560482a5f7da Content-Type: text/plain; charset=ISO-8859-1 Hello list, I know the ruby community is filled with algorithmic folks. I have a fairly simple algorithm that I have solved, but I know it can be done cleaner than I have. Given a short string of words separated by spaces, I wish to print out every contiguous subset of words from that string. Given this string: "first second third fourth fifth" Output this list of substrings: first second third fourth first second third second third fourth first second second third third fourth first second third fourth I feel like this should all be possible within a REGEX, but I couldn't manage that. So I turned it into an array plowed through it in a very manual manner. You can run this in irb: phrase = "first second third fourth".split(' ') (phrase.size.downto(1)).each do |subphrase_size| (0..phrase.size-subphrase_size).each do |cursor| [cursor..cursor+subphrase_size-1].each do |subrange| puts subrange.inject('') {|subphrase,letter| subphrase + phrase[letter] + ' '} end end end Isn't there a cleaner way? Joe --001636b2be3f2e23560482a5f7da--