ruby 将一个数组排列组合

要将一个数组进行排列组合,可以使用 Ruby 的 Array 类的 repeated_permutationpermutation 方法。

以下是一个例子,假设有一个数组 arr

arr = [1, 2, 3]

我们可以通过 repeated_permutation 方法得到所有元素可重复的排列组合:

arr.repeated_permutation(2).to_a    # => [[1, 1], [1, 2], [1, 3], [2, 1], [2, 2], [2, 3], [3, 1], [3, 2], [3, 3]]

这个例子中,arr.repeated_permutation(2) 表示在 arr 中选取两个元素进行排列组合,并且每个元素可以重复出现。

我们也可以通过 permutation 方法得到所有元素不重复的排列组合:

arr.permutation(2).to_a            # => [[1, 2], [1, 3], [2, 1], [2, 3], [3, 1], [3, 2]]

这个例子中,arr.permutation(2) 表示在 arr 中选取两个不同的元素进行排列组合。

如果选取的元素数量与数组长度相等,则可以省略第一个参数。例如,要得到 arr 中所有元素可重复的三个排列组合,可以这样写:

arr.repeated_permutation(3).to_a    # => [[1, 1, 1], [1, 1, 2], [1, 1, 3], [1, 2, 1], [1, 2, 2], [1, 2, 3], [1, 3, 1], [1, 3, 2], [1, 3, 3], [2, 1, 1], [2, 1, 2], [2, 1, 3], [2, 2, 1], [2, 2, 2], [2, 2, 3], [2, 3, 1], [2, 3, 2], [2, 3, 3], [3, 1, 1], [3, 1, 2], [3, 1, 3], [3, 2, 1], [3, 2, 2], [3, 2, 3], [3, 3, 1], [3, 3, 2], [3, 3, 3]]