【问题标题】:Write a Function 'or' without '||'写一个没有 '||' 的函数 'or'
【发布时间】:2017-08-29 10:45:52
【问题描述】:

写一个不带||的函数'or' 给定 2 个布尔表达式,“或”返回 true 或 false,对应于 ||操作员。 *应该使用!和&&

function or(expression1, expression2) {
  return !expression1 && expression1 && !expression2 && expression1
}

我试过了,但同时我对这个问题到底在问什么感到困惑

预期输出:

var output = or(true, false);
console.log(output); // --> true;

【问题讨论】:

  • 我试过了,但同时我对这个问题到底在问什么感到困惑 - 啊哈!找到了作业问题。
  • 您能提供示例输入和预期输出吗?
  • “请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的总结,以及您在解决问题时遇到的困难的描述” - help center
  • Here你可以找到提示!
  • 大概在给你这个作业之前,你的老师向你介绍了任何布尔逻辑操作数都可以只使用 NAND 来实现的想法。回顾那些笔记,并应用你所知道的。

标签: javascript function boolean operator-keyword


【解决方案1】:

一些基本的考虑,De Morgan's laws:

!(a && b) = !a || !b 
!(a || b) = !a && !b

function or(a, b) {
    return !(!a && !b);
}

console.log(or(false, false)); // false
console.log(or(false, true));  // true
console.log(or(true, false));  // true
console.log(or(true, true));   // true

【讨论】:

    【解决方案2】:

    这是可行的解决方案

    function or(a, b){
    if(!a && !b) 
    	return false
    return true;
    }
    
    console.log(or(true, true));
    console.log(or(true, false));
    console.log(or(false, true));
    console.log(or(false, false));

    希望这会有所帮助!

    【讨论】:

    • 解释会有所帮助,因为仅仅提供答案不会帮助 OP 学习。 (毕竟这是一道作业题)
    【解决方案3】:

    他们要求您展示的概念是所谓的 NAND 或 Not AND

    NAND 是电子学中最常见的逻辑运算符类型,可用于表示所有其他逻辑。

    您可以在此处找到您应该建模的内容:https://en.wikipedia.org/wiki/NAND_logic#OR

    【讨论】:

      【解决方案4】:

      你的实现:

         return !a && b && !a && b  
      

      对于truefalse,计算结果为:

         return !true && true && !false && false;
      

         return false && true && true && false;
      

      由于延迟评估,它甚至不会在第一个false && 之后评估任何内容,因为无论x 的值如何,false && x 都是假的。对于任何输入,其中一个术语是 false,因此它总是返回 false。

      如果你把它分成更小的部分可能会有所帮助:

       boolean bothFalse = !a && !b
       boolean notBothFalse = !bothFalse;
       return notBothFalse;
      

      但是使用方括号() 您可以在一行中表达这一点。我会把这个留给你做练习。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 2021-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多