从Ruby中的多维数组创建排列

我在Ruby中有以下多维数组:

[[1,2], [3], [4,5,6]] 

我需要输出以下内容:

 [[1,3,4], [1,3,5], [1,3,6], [2,3,4], [2,3,5], [2,3,6]] 

我试过创建一个递归函数,但我运气不好。

是否有任何Rubyfunction可以帮助解决这个问题? 或者是递归执行此操作的唯一选择?

谢谢

是的, Array#product就是这样( 笛卡尔积 ):

 a = [[1,2], [3], [4,5,6]] head, *rest = a # head = [1,2], rest = [[3], [4,5,6]] head.product(*rest) #=> [[1, 3, 4], [1, 3, 5], [1, 3, 6], [2, 3, 4], [2, 3, 5], [2, 3, 6]] 

另一个变种:

 a.inject(&:product).map(&:flatten) #=> [[1, 3, 4], [1, 3, 5], [1, 3, 6], [2, 3, 4], [2, 3, 5], [2, 3, 6]]