JavaScript优化逻辑代码之离散数学的应用

离散数学优化代码:

今日看了一篇文章,关于代码的逻辑优化,如下:

if(a && d || b && c && !d || (!a || !b) && c){
    console.log("pass")
}  else{
    console.log("fail")
}

面对这种复杂的逻辑,该如何优化呢?
有一本书《离散数学》,对于与或非,总结了一些规则。如下:
离散数学公式:
注:用!代替字母头上的橫扛,代表"非"的意思
规则:
(1)A + A = A A + !A = 1
(2)AB + A!B = A
(3)A + AB = A
(4)!A + !B = !(AB) !(AB) = !( A + B)
(5)AB + !AC = AB + !AC + BC

上面代码可以简化为:
AD + BC!D + (!A+!B)C 【第4条】
==>AD + BC!D + !(AB)C 【第5条】
==>AD + BC!D + ABC + !(AB)C 【第2条】
==>AD + BC!D + C 【第3条】
==>AD + C 【最终简化】

所以代码简化为:

if(a&&d||c){
  console.log("pass")
}  else{
  console.log("fail")
}

你可能感兴趣的:(javascript)