2017-08-30 42 views
0

試驗次數以下代碼計算5C4(5組合4)作爲一個字符串的所有結果:限制在組合紅寶石

a = ['1', '2', '3', '4', '5'] 
result_array = a.combination(4).map(&:join).to_a 

是否有我可以用來限制組合的試驗的數量的方法,類似於Python中的itertools模塊?

+0

如果你想採取第一個這麼多的組合是否有一個理由,你想構建一個數組,而不是簡單地讓枚舉器將第一個'n'元素傳遞給另一個枚舉器或塊? –

+0

我正在做的是實際上在不同的4組之間進行組合,所以如果我在枚舉器中使用調用枚舉器,我認爲它會導致很多重疊。 @Cary Swoveland –

+0

如果你的意思是你希望通過從4個數組中繪製一個元素來獲得第一個如此多的4元組,那麼這將是一個不同的問題,儘管這是一個有趣的問題。如果是這樣,請考慮發佈另一個問題。 –

回答

4

試試這個:

result_array = a.combination(4).lazy.map(&:join).take(2).to_a 

lazy將確保你只需要通過take計算儘可能多的價值。

+0

@ jh-shin請注意,懶惰電話的位置以前是錯誤的,我不應該在這之前發佈咖啡... –

+0

沒有問題。我已經知道了。感謝你對「懶惰」的警告 –