gpt4 book ai didi

ruby - 如何在表达式中分配元素?

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

给定一个表达式:

(A OR B) AND (C OR D) AND (X OR Y OR Z)

我需要分发和生成组合 ACXACYACZADXADY , ADZ, BCX, BCY, BCZ, BDX, BDYBDZ。我们有一个用户界面,用户可以使用它来生成上述表达式。在后端,我们需要生成不同的组合,以便更容易地匹配一组元素,如 ACX、ACY 等。

AND 组的数量不固定,每个 AND 组中的元素大小也不同。

对于如何完成这项工作有何想法?我正在尝试用递归来编写它,看看其他人是否有更聪明的答案,或者是否存在一个库。

最佳答案

尝试:

AB = %w[A B]
CD = %w[C D]
XYZ = %w[X Y Z]

AB.product(CD, XYZ).join(&:map)

返回的数组如下:

[
"ACX",
"ACY",
"ACZ",
"ADX",
"ADY",
"ADZ",
"BCX",
"BCY",
"BCZ",
"BDX",
"BDY",
"BDZ"
]

鲁比的 Array.product文档说:

------------------------------------------------------------------------------
ary.product(other_ary, ...) -> new_ary
ary.product(other_ary, ...) { |p| block } -> ary


------------------------------------------------------------------------------

Returns an array of all combinations of elements from all arrays. The length of
the returned array is the product of the length of self and the argument
arrays. If given a block, product will yield all combinations and
return self instead.

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

您的问题特别感兴趣的是第三个示例。

关于ruby - 如何在表达式中分配元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154227/

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