从Ruby中的多维数组创建组合

时间:2013-12-16 14:19:48

标签: ruby

这是我的问题:

给定一个多维数组:[['monday', 'saturday'], ['beginner'], ['kid', 'adult']]

我想:

['monday', 'monday-beginner', 'monday-beginner-kid', 'monday-beginner-adult', 'monday-kid', 'monday-adult', 
 'saturday', 'saturday-beginner', 'saturday-beginner-kid', 'saturday-beginner-adult', 'saturday-kid', 'saturday-adult', 
 'beginner', 'beginner-kid', 'beginner-adult',
 'kid',
 'adult']

以下是我看到的可以提供帮助的问题:

2 个答案:

答案 0 :(得分:4)

first, *rest = [['monday', 'saturday'], ['beginner'], ['kid', 'adult']]
.map{|a| [nil, *a]}
first.product(*rest).map{|a| a.compact.join("-")} - [""]

答案 1 :(得分:0)

我有两个步骤的解决方案: - 在你的例子中找到所有可能的组合,4:

['monday', 'beginner', 'kid']
['monday', 'beginner', 'adult']
['saturday', 'beginner', 'kid']
['saturday', 'beginner', 'adult']

然后使用combinaison方法使用n从1到3进行3次,然后合并3次返回。你最后只需要在每个排列上调用.join(“ - ”)。