gpt4 book ai didi

Ruby - 如何从数组列表的每个数组中选取 1 个值来找到结果组合

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:54 24 4
gpt4 key购买 nike

假设我在一个数组中包含以下 ruby​​ 数组,但我不知道会有多少个数组或它们的长度。下面是一个例子:

[["cat", "dog"],[1, 3, 5, 7],["morning", "afternoon", "evening"]]

我想要做的是从每个数组中选取 1 个值并将其作为这些组合的数组返回,从而获得所有结果组合。因此,在下面的例子中,应该有2*4*3,即24个可能的唯一结果。

结果会是这样的:

result = [["cat", 1, "morning"], ["cat", 1, "afternoon"], ["dog", 5, "evening"] ...]

对于 N 个数组的列表,我将如何在 ruby​​ 中执行此操作?我试着摆弄产品、 map 和注入(inject),但我无法让它工作。

最佳答案

编辑 因为您明确表示您处理的不仅仅是三个数组 a1a2a3 而是一个数组数组,将我的解决方案更改为使用 product

像这样吗?

 a1.map{|x1| a2.map{|x2| a3.map{|x3| [x1, x2, x3] }}}.flatten(2)

或者使用flat_map:

 a1.flat_map{|x1| a2.flat_map{|x2| a3.map{|x3| [x1, x2, x3] }}}

哇,或者只是:

 a1.product(a2,a3)

如果你有多个数组(不仅仅是第一个例子中固定数量的 3),然后:

 input = [["cat", "dog"],[1, 3, 5, 7],["morning", "afternoon", "evening"]]
h,*rest = input
result = h.product(*rest)

关于Ruby - 如何从数组列表的每个数组中选取 1 个值来找到结果组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com