2012-07-11 96 views
0

我有遞歸組串上長度

strings = ["aaa", "bb", "ccc", "ddd", "e", "ff", "rrrrrrrr", "tttttttt", "a"] 

欲組陣列中的串,使得每個元件不再然後5和不短然後9.串具有保持它們的順序在陣列。

編輯:對不起,我的困惑,是 - 至少5和最多9

我找的結果是:

result = ["aaabbbccc", "dddeff", "rrrrrrrr", "tttttttta"] 
+2

我不確定你在問什麼,你可以顯示你正在尋找的輸出嗎? – 2012-07-11 02:58:55

+3

「不超過5且不少於9」描述了一個空集。你的意思是「至少5,最多9」? – 2012-07-11 03:07:04

+0

借調混亂。你想設計一些排序算法嗎?如果你需要的只是一個簡單的[Schwartzian變換](http://en.wikipedia.org/wiki/Schwartzian_transform),那麼就有'Array#sort_by'。 – Max 2012-07-11 05:32:32

回答

1

因爲你的問題是在一個相當混亂的方式指明,這是我能想到的最好的。

strings.inject(['']) { |a, s| a.last.size + s.size <= 9 ? a.last << s : a << s ; a } 
#=> ["aaabbccc", "dddeff", "rrrrrrrr", "tttttttta"] 
+0

這實際上解決了這個問題..非常感謝。 – Stpn 2012-07-11 22:29:26