gpt4 book ai didi

c# - boolean 逻辑规则评估器

转载 作者:行者123 更新时间:2023-11-30 22:50:59 26 4
gpt4 key购买 nike

我基本上展示了一项调查,人们回答问题很像测试,并且有不同的路径,到目前为止它很容易,但我想让它更动态,这样我就可以有一个通用规则来测试所有路径,使评估器更容易与我一起工作只允许 AND,每个 OR 本质上成为集合中的另一个规则,

QuestionID,然后我像这样形成一堆 AND 规则

<rule id="1">
<true>
<question ID=123>
<question ID=124>
</true>
<false>
<question ID=127>
<question ID=128>
</false>
</rule>
<rule id="2"><true>
<question ID=123>
<question ID=125>
</true>
<false>
<question ID=127>
</false>
</rule>

这条规则 1 说如果问题 123 和 124 的答案是正确的,而 127 和 128 是错误的,他们通过。 OR(规则 2)是如果 123 和 125 为真且 127 为假,则它们也通过。如果有很多组合,这会变得乏味,所以我想在逻辑中实现 OR,我只是不确定解决这个问题的最佳方法是什么。

我认为规则引擎太复杂了,必须有更简单的方法,也许像在 LINQ 中构造一个图,然后评估它们是否通过,

谢谢!

--不是 compsci 专业。

最佳答案

这并不一定很复杂:您已经完成了大部分工作,因为您的 and 元素有效地实现了 AND 类型的规则。我会介绍一个可以容纳元素的元素。

在你的能力范围内,你可以:

  • 一个 RuleBase 类,带有“public abstract bool Evaluate()”方法
  • TrueRule、FalseRule 和 OrRule 类,其中包含 RuleBase 对象列表
  • 一个 QuestionRule 类,它指的是一个特定的问题

您将按如下方式对其中的每一个实现 Evaluate 方法:

  • TrueRule:仅当所有包含的规则从 Evaluate 返回 true 时才返回 true
  • FalseRule:仅当所有包含的规则从 Evaluate 返回 false 时才返回 true
  • OrRule:如果包含的至少一个规则从 Evaluate 返回 true,则返回 true
  • QuestionRule:返回原始问题的答案

此类层次结构实现了一个简单的抽象语法树 (AST)。 LINQ,以 System.Expressions.Expression 类的形式,做几乎相同的事情,但如果不清楚所有内容如何组合在一起,那么编写自己的内容会很有帮助。

关于c# - boolean 逻辑规则评估器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/247779/

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