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