说,我有一个数组:
a = [1,2]
和
n = 3
我想要这样的输出:
[[1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 2, 2], [2, 1, 1], [2, 1, 2], [2, 2, 1], [2, 2, 2]]
n
这是array 中元素长度的所有可能组合a
。
最重要的是我使用的是 ruby 1.8.7
说,我有一个数组:
a = [1,2]
和
n = 3
我想要这样的输出:
[[1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 2, 2], [2, 1, 1], [2, 1, 2], [2, 2, 1], [2, 2, 2]]
n
这是array 中元素长度的所有可能组合a
。
最重要的是我使用的是 ruby 1.8.7
a.repeated_combination(n).to_a
使用前请详细测试:
x = [1,0]
n = 3
def perm(a, n)
l = a.length
(l**n).times do |i|
entry = []
o = i
n.times do
v = o % l
entry << a[v]
o /= l
end
yield(i, entry)
end
end
perm(x, n) do |i, entry|
puts "#{i} #{entry.reverse.inspect}"
end
印刷
0 [0, 0, 0]
1 [0, 0, 1]
2 [0, 1, 0]
3 [0, 1, 1]
4 [1, 0, 0]
5 [1, 0, 1]
6 [1, 1, 0]
7 [1, 1, 1]