I only need the consecutive forward groups of chars output. Each subarray should contain all the letters of `s` broken in different ways. I don't need `['gnirts']`, `['gn', irts']`, or something mixed up like `['stngri']`. When it's over seven chars, it is tricky. Here's a map of the different combinations, assuming the string `s` is a minimum length of two:

When we look at the results, it's very clear that its a recursive method. We take the first 2 characters of the string, and then apply fibstring to the rest. Then we take the first 3 characters and apply fibstring to the rest. Then we take the first 4... up until the length of the string minus 2. If we get a string of length 2 we return it.

It should be fairly easy to construct this recursive method. My solution is as follows

def fibstring(s)
result = [s]
return result if s.length <= 2
arr = s.split(//)
(2..arr.size-2).each do |i|
res = fibstring(arr[i..-1].join)
res.each do |str|
result << [arr[0..i-1].join, str].flatten
end
end
result
end

This is an even better solution, which actually grants each solution in a separate array