在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 }