gpt4 book ai didi

ruby - 从 Ruby 中的多维数组创建排列

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

我在 Ruby 中有以下多维数组:

[[1,2], [3], [4,5,6]]

我需要有以下输出:

[[1,3,4], [1,3,5], [1,3,6], [2,3,4], [2,3,5], [2,3,6]]

我试过创建一个递归函数,但运气不太好。

是否有任何 Ruby 函数可以帮助解决这个问题?还是递归执行此操作的唯一选择?

谢谢

最佳答案

是的,Array#product就是这样做的(Cartesian product):

a = [[1,2], [3], [4,5,6]]
head, *rest = a # head = [1,2], rest = [[3], [4,5,6]]
head.product(*rest)
#=> [[1, 3, 4], [1, 3, 5], [1, 3, 6], [2, 3, 4], [2, 3, 5], [2, 3, 6]]

另一种变体:

a.inject(&:product).map(&:flatten)
#=> [[1, 3, 4], [1, 3, 5], [1, 3, 6], [2, 3, 4], [2, 3, 5], [2, 3, 6]]

关于ruby - 从 Ruby 中的多维数组创建排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5582481/

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