生成现有阵列的所有组合的数组 [英] Generate array of all combinations of an existing array

查看:118
本文介绍了生成现有阵列的所有组合的数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我有在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆