javascript - 如何重写否定行?

标签 javascript logic

否定需要我几个小时的反复试验,直到没有任何问题,除了直觉之外还有什么否定方法?例如:

//x and y are whole numbers

!((x<9) && (y<=(8-x)))
((x>8) || (y>(8-x)))

最佳答案

最简单的事情就是忽略有关值域的问题,并将其视为完全逻辑问题。那么我们可以将其分解为以下几种情况:

!(A || B) ~= !A && !B
!(A && B) ~= !A || !B
!(!A) ~= A
!(x > y) ~= x <= y
!(x >= y) ~= x < y

前两个可以轻松扩展:

!(A || B || C || D || ...) ~= !A && !B && !C && !D && ...
!(A && B && C && D && ...) ~= !A || !B || !C || !D || ...

因此,对于您的示例之一,我们有:

!((x < 9) && (y <= (8-x)))
!(x < 9) || !(y<=(8 - x)
(x >=9) || (y > (8 - x))

我们可以将其保留为这样,但由于您有其他域信息(“x 和 y 是整数”),您可以将其合并以返回稍微不太具体但在上下文中足够准确的答案,例如

(x > 8) || (y > (8 - x))

您必须根据具体情况决定是否值得采取额外的步骤。它可能会获得稍微减少的代码库,但也可能会失去与原始格式的不太透明的链接。

关于javascript - 如何重写否定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469071/

相关文章:

javascript - 是否可以在上传前同时验证文件大小和扩展名?

javascript - 替换 Javascript 中正则表达式匹配的结果

python - 艰难地学习 Python,EX35。为什么大于 10 的数字返回 true?

python - 为什么 '' > 0 在 Python 2 中为真?

java - 如何让这段代码打印一个数字中有多少个素数?

javascript - JavaScript 如何挂接 WinRT 事件?

Javascript 图表填满整个浏览器窗口

javascript - 如何使用 ReactJS 获取总列​​数?

Javascript URL 查询字符串逻辑

c - 这种逻辑方法适合我的程序吗?