计算多个数组之间的可能组合

时间:2014-03-06 15:46:41

标签: ruby-on-rails ruby

我正在制作一个问题清单。有3个问题,每个问题有4个答案。我试图计算哪些组合是可能的。

应该有4x4x4(= 64)种可能的组合。我期待像这样的数组[1,1,1](用户用第一个答案回答所有3个问题)。

我看到ruby有一个很好的permatation方法,但它不是永久性的。组合方法只需要一个帐户1个数组。

总之,我有3个数组,每个都有[1,2,3,4],我喜欢每个组合的64个数组

2 个答案:

答案 0 :(得分:5)

使用Array#product方法。

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

我使用Array#size向您展示,正在生成64种组合。

答案 1 :(得分:1)

如果所有问题的答案数相同,您可以使用针对问题数量提出的答案数来计算可能组合的数量。红宝石的代码是:

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

如果每个问题的答案数量不同,您可以对它们进行计数,然后将它们相乘以获得答案(就像您在问题中所做的那样)。例如,如果你有3个问题,第一个有4个答案,第二个有5个答案,第三个有3个答案,你可以这样做:

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