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

Find every permutation of an array in Ruby, including permutations with sub arrays

考虑一个数组:[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 }