在Ruby中查找数组的每个排列,包括子数组的排列

考虑一个数组: [4, 6, 9]

要求所有排列:(一,二和三位数)

 [[9], [6], [4], [9, 6], [9, 4], [6, 9], [6, 4], [4, 9], [4, 6], [9, 6, 4], [9, 4, 6], [6, 9, 4], [6, 4, 9], [4, 9, 6], [4, 6, 9]] 

记录这个问题和我自己的发现,因为我在搜索时找不到任何简单的东西。 也许这可以帮助某人:

 a = [4, 6, 9] (1..a.length).flat_map { |n| a.permutation(n).to_a } 

对于每种组合,只需切换方法,如下所示:

 a = [4, 6, 9] (1..a.length).flat_map { |n| a.combination(n).to_a }