复合取反条件硬读:not (a and b) 被学员逐个翻成 not a and not b——德摩根律要求去掉外层 not 时翻转逻辑连接词(and 变 or),写错连接词边界数据直接走错分支。错误场景:
local a, b = false, true
print(not (a and b))
print(not a and not b)
输出 true 与 false——同一条件两种写法结果不同,化简时把 and 照抄成了 and。
德摩根律两条规则:not (a and b) 等价 not a or not b;not (a or b) 等价 not a and not b——去外层 not 必换连接词。规范写法。示例代码如下:
local a, b = false, true
print(not (a and b) == (not a or not b))
print(not (a or b) == (not a and not b))
输出 true 与 true——两条化简规则与原式严格等价。
三步验证:四组真值组合逐个验证两条德摩根等式;把业务里的 not (x > 1 and x < 9) 化简为 x <= 1 or x >= 9;对比化简前后四组边界数据的分支走向,确认分毫不差。
德摩根的实战价值是把拒绝条件翻译成通过条件——读代码的人只看一层否定。示例代码如下:
local lv, vip = 45, false
local reject = not (lv >= 50 or vip)
local pass = lv >= 50 or vip
print(reject == not pass)
输出 true——烈火剑法的拒绝式与通过式严格互斥,两处判断天然一致。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、隐蔽陷阱 对比两份任务记录的"共同路线":要求连续的子串可以逐位比对,允许跳过中间步骤的最长公共子序列却没法直…
【游戏】 一、业务场景 新玩家出门就挨打,图文教学没人看,第二天流失率居高不下。训练营上线:三个分阶关卡(走位、连招、节奏)…
【语法】 一、隐蔽陷阱 五只猴子分桃,每来一只把桃分成 5 份多 1 个扔掉再拿走一份。正向从 1 个桃开始试,试到几千个才…
【游戏】 一、业务场景 满级玩家装备毕业后一周流失,进度条走到头没了盼头。渡劫玩法上线:80 级可挑战三重天劫,全通获得渡劫…
【语法】 一、隐蔽陷阱 63 分找零用面额 1、5、10、25 的硬币,贪心取最大面额 6 枚搞定;可换成面额 1、3、4 …
【游戏】 一、业务场景 会长每天手动发福利、清名单、盯报名,帮务占满游戏时间,连着三周漏发福利被帮众催。帮会管家上线:每周 …