的所有组合的阵列。如果我有一个数组在Ruby中,像这样:生成一个现有的阵列
["foo", "bar", "bat"]
我怎样可以产生价值的每一个组合新的阵列?
我需要的输出看起来像这样:
["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]
顺序并不重要。此外,我不需要都"foo-bar"
和"bar-foo"
。
原始数组可能有多达5-6个成员。
的所有组合的阵列。如果我有一个数组在Ruby中,像这样:生成一个现有的阵列
["foo", "bar", "bat"]
我怎样可以产生价值的每一个组合新的阵列?
我需要的输出看起来像这样:
["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]
顺序并不重要。此外,我不需要都"foo-bar"
和"bar-foo"
。
原始数组可能有多达5-6个成员。
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"]
在ruby 1.9中,你可以使用'flat_map'而不是'map' +'flatten'。 – Casper
@Casper是的,这更好,谢谢。 – steenslag
完美的作品! –