【发布时间】:2013-06-17 18:24:49
【问题描述】:
给定一个表达式:
(A OR B) AND (C OR D) AND (X OR Y OR Z)
我需要分发和生成组合ACX、ACY、ACZ、ADX、ADY、ADZ、BCX、BCY、BCZ、@98765433 BDY 和 BDZ。我们有一个用户界面,用户可以使用它来生成上述表达式。在后端,我们需要生成不同的组合,以便更轻松地与 ACX、ACY 等一组元素进行匹配。
具有 AND 的组的数量不固定,每个 AND 组中的元素大小也各不相同。
对于如何完成这项工作有什么想法?我正在尝试用递归编写它,并查看其他人是否有更聪明的答案或者是否存在库。
【问题讨论】:
-
AND和OR是什么意思? Ruby 没有这样的表达式。你的意思是逻辑and和or?如果你是这个意思,那是不可能的。 -
谢谢@sawa,我不是指任何语言的逻辑连接词——只是一种表示标准的格式。
-
为了完整起见,接受下面@the-Tin-Man 的回答。对解决方案的动态版本感兴趣的人,请参阅stackoverflow.com/questions/5582481/…。特别是代码块头,*rest = a head.product(*rest)
标签: ruby algorithm distribution