如何获得混洗数组的组合数?

时间:2014-09-11 23:31:43

标签: ruby

我是Ruby的新手,我正在使用红宝石和尚来提高我的知识水平。我不明白有一个问题的解决方案。任务是:给定具有不同数字的3位或4位数字,返回可以用这些数字形成的所有唯一数字的排序数组。我不明白如何计算组合的数量。这是代码:

no_of_combinations = number.to_s.size == 3 ? 6 : 24

请向我解释一下3 ? 6 : 24是什么以及它是如何运作的。 谢谢

2 个答案:

答案 0 :(得分:0)

这是红宝石中的三元操作。它读作:

if(number.size isEqaul to 3)
    no_of_combinations equals 6

else
    no_of_combinations equals 24 

这样想:

if_this_is_true  ?  then_do_this  :  else_do_this

答案 1 :(得分:0)

使用三元运算符?:(需要3个参数:condition ? if_cond_true : if_cond_not_true)的操作相当于:

no_of_combinations = if(number.to_s.size == 3)
                       6
                     else
                      24
                     end

6 == 3! #number of 3 3个不同元素/数字的排列

24 == 4! #number of 4的不同元素/数字的排列

哪里!表示阶乘(4!== 4×3×2×1)。