给定一个整数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]
元素的顺序并不重要。
答案 0 :(得分:2)
(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
中的结果。