生成现有阵列的所有组合的数组 [英] Generate array of all combinations of an existing array
本文介绍了生成现有阵列的所有组合的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我有在Ruby中的数组,像这样的:
[富,酒吧,蝙蝠]
我怎样才能生成一个新的数组值的每个组合?
我需要的输出是这样的:
[富,酒吧,蝙蝠,福吧,富 - 蝙蝠,扎蝙蝠,富酒吧蝙蝠 ]
顺序并不重要。另外,我不需要的两个的福吧
和扎富
。
原阵列最多可以有5-6个成员。
解决方案
AR = [富,酒吧,蝙蝠]
p 1.upto(ar.size).flat_map {| N | ar.combination(N).MAP {| EL | el.join(' - ')}}
#=>富,酒吧,蝙蝠,福吧,富 - 蝙蝠,扎蝙蝠,富酒吧蝙蝠]
If I have an array in Ruby, like this:
["foo", "bar", "bat"]
How can I generate a new array with every combination of values?
I need the output to look like this:
["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]
Order is unimportant. Also, I do not need both "foo-bar"
and "bar-foo"
.
The original array may have up to 5-6 members.
解决方案
ar = ["foo", "bar", "bat"]
p 1.upto(ar.size).flat_map {|n| ar.combination(n).map{|el| el.join('-')}}
#=>["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]
这篇关于生成现有阵列的所有组合的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文