使用正整数作为元素生成不同的数组组合

时间:2015-10-03 03:47:12

标签: arrays ruby

给定一个整数n和一个不同的整数k(都是正数)我想在{{1}区间内生成包含整数的所有可能不同的大小为k的数组}。例如,[0..n]n = 2我希望生成包含k = 2[0,0][0,1][1,0],{{的数组数组1}},[0,2][1,1][2,0][1,2]。所以结果应该是

[2,1]

元素的顺序并不重要。

2 个答案:

答案 0 :(得分:2)

使用Array#repeated_permutation

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

答案 1 :(得分:1)

您可以使用Array#product

arr = [*0..2]
arr.product(arr)
  #=> [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]] 

如果你只是想要一个数组,那很好,但Array#repeated_permutation,因为它返回一个枚举器(而不是数组),如果你想将另一个方法链接到结果,例如模块Enumerable或类Enumerator中的结果。