1

如果我在 Ruby 中有一个数组,如下所示:

["foo", "bar", "bat"]

如何使用每种值组合生成一个新数组?

我需要输出如下所示:

["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]

顺序不重要。另外,我不需要两者 "foo-bar""bar-foo"

原始数组最多可以有 5-6 个成员。

4

2 回答 2

5
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"]
于 2012-06-05T16:09:45.313 回答
2

您可以尝试查看两个数组的叉积

arr = %w(foo bar bat)

arr.product(arr).collect{|el| el.uniq.join("-")}
于 2012-06-05T16:04:29.250 回答