2014-03-06 86 views
3

我正在提出問題列表。有3個問題,每個問題有4個答案。我試圖計算哪些組合是可能的。計算多個陣列之間的可能組合

應該有4x4x4(= 64)可能的組合。我期望有一個像這樣的數組[1,1,1](用戶用第一個答案回答所有3個問題)。

我看到紅寶石有一個很好的配置方法,但它不是永恆的。組合方法,只需要一個數組到一個帳戶。

因此,在短期,我有3個陣列,每個具有[1,2,3,4]和我喜歡64個陣列,每一個組合

回答

4

使用Array#product方法。

[1,2,3,4].product([1,2,3,4],[1,2,3,4]).size # => 64 

我用Array#size向你展示了正在生成64個組合。

+1

太棒了!我會在幾分鐘內接受。 – Jareish

1

如果所有問題的答案數量相同,則可以使用提出的問題數量來計算可能的組合數量。造成這種情況的Ruby代碼是:

answer_count = 4 
question_count = 3 
combinations = answer_count**question_count 

如果回答每個問題的數量是不同的,你可以指望它們,然後乘以他們爲你的答案(如你在路上你的問題做)。例如,如果您有3個問題,第一個答案有4個答案,第二個答案有5個答案,第三個答案可以是這樣的:

answer_counts = [4, 5, 3] 
answer_counts.inject(1) {|product, answers| product * answers}