布尔乘积和简化

Posted

技术标签:

【中文标题】布尔乘积和简化【英文标题】:Boolean product and semplify 【发布时间】:2022-01-19 10:29:08 【问题描述】:

我有一个问题要问你。

例如我有这个布尔表达式:

(((A AND B) OR C) AND D) AND ((K AND Z) OR (J AND H)) AND Y

这只是一个例子,但我可以有很多这样的表达式,我必须在 javascript 中编写一个算法,以使这个表达式简单并且可以通过 json 表示。

基本思想是像这样使用布尔产品:

(A AND B) OR C = (A OR C) AND (B OR C)

但是我怎样才能为此编写自动的东西呢?

谢谢。

【问题讨论】:

(A AND B) OR C = (A OR C) AND (B OR C) 这两个中的哪一个可以用 JSON 表示?如何?您的第一个示例表达式的哪一部分可以用 JSON 表示? 感谢您的回复。我必须用 JSON 来表达这两种表达方式。用户应该使用前端应用程序创建配置,我必须全部转换。 那我不明白这个问题。 如何表示它们?为什么第一个不能表示? “我必须用 JavaScript 编写一个算法,以使这个表达式简单并可以通过 json 表示” 这可以像 "expression": "(((A and B) ..." 一样简单,或者你实际上可以有解析器为您生成 AST。有一些解析器生成器采用一种语言的语法并为您生成解析器。如果您甚至不知道如何在 JSON 中表示此信息,那么您首先必须考虑这一点。我们无法告诉您如何表示它,因为我们不知道数据将如何被使用。您必须查看您的要求并相应地设计格式。 我要像塞巴斯蒂安的图书馆一样表达!现在我正在努力谢谢大家的回复,我会让你知道结果! 【参考方案1】:

您可以在 GitHub 上查看现有的库,例如 riichard/boolean-parser-js。

【讨论】:

谢谢兄弟,我想这就是答案,我试着让你知道!

以上是关于布尔乘积和简化的主要内容,如果未能解决你的问题,请参考以下文章

布尔逻辑 - 简化产品的总和

布尔逻辑:如何简化此 IF 语句?

简化布尔表达式的算法

如何简化任意布尔表达式?

表达式可以在布尔文字上简化[重复]

布尔代数表达式简化