【问题标题】:Help need for specific boolean logic帮助需要特定的布尔逻辑
【发布时间】:2011-09-13 13:27:51
【问题描述】:
CaptchaIsExist    CaptchaIsValid   =   Result
--------------    -------------       --------
   true                false        =    false

   Any other variations             =    true

现在如何编写逻辑以获得这些结果?看起来很简单,但我觉得还不够。

【问题讨论】:

  • 结果 = !(CaptchaIsExist && (!CaptchaIsValid));

标签: language-agnostic logic boolean


【解决方案1】:

@Binary Worrier 解决方案的替代方案:

bool Result = CaptchaIsValid OR NOT CaptchaIsExist

我认为这更自然地表达了逻辑,即当你阅读它时它传达了预期的逻辑。

【讨论】:

  • CaptchaIsValid=trueCaptchaIsExist=false 时,这不会导致true,还是我错过了什么?
  • 如果验证码不存在,验证其有效性可能会失败。我认为最好颠倒测试顺序,假设语言使用短路评估。
  • @Binary Worrier:是的,它应该是 - 在 4 种情况下有 3 种结果应该为 TRUE,只有一种特定情况应该为 FALSE,即 CaptchaIsValid=FALSE 和 CaptchaIsExist=TRUE . (注意:如果您将 De Morgan 规则应用于您的表达式,您会得到我的表达式,即它们是等价的。)
  • @Paul R - 它是否也等于(不是 CaptchaIsExist)或 CaptchaIsValid ?
  • @AnyOne:是的,评估的顺序并不重要,只要这些只是简单的布尔值。
【解决方案2】:

只需指定false 的条件并将not 应用于它...

not (CaptchaIsExist && not (CaptchaIsValid))

【讨论】:

    【解决方案3】:

    不,真的很简单。

    bool Result = not (CaptchaIsExist and not CaptchaIsValid)
    

    【讨论】:

      【解决方案4】:
      (not CaptchaIsExist) or CaptchaIsValid
      

      【讨论】:

        【解决方案5】:

        在类 C 的伪代码中:

        if (CaptchaIsExist && !CaptchaIsValid) then
            return false;
        else
            return true;
        

        【讨论】:

          【解决方案6】:
          Boolean result = ((CaptchaIsExist && !CaptchaIsValid)) ? false: true;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-08-02
            • 1970-01-01
            • 2017-04-04
            • 2014-07-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多