真值表 v1.0

包含表征逻辑事件输入和输出之间全部可能状态表格的元件,除了能像经典版一样根据指定的输入输出电压,还能根据表达式进行计算;该元件的端口定义与原版相同,不再复述
规则例子
规则的计算表达式基于 NCalc2,写法类似于 Excel公式,请先看具体例子:
1;2;3;4:5
| 端口 | 上端 | 右端 | 下端 | 左端 |
|---|---|---|---|---|
| 当前输入 | = 1 | = 2 | = 3 | = 4 |
| 输出 | 5 | |||
>0x1;<=0xA;i3>1&&i3<99:0xABC
| 端口 | 上端 | 右端 | 下端 | 左端 |
|---|---|---|---|---|
| 当前输入 | > 0x1 | ≤ 0xA | > 1 且 < 99 | 任意值 |
| 输出 | 0xABC | |||
0;0;0;0;;i2;true;>i1:10
| 端口 | 上端 | 右端 | 下端 | 左端 |
|---|---|---|---|---|
| 上 1 轮输入 | = 0 | = 0 | = 0 | = 0 |
| 当前输入 | = 右端输入 | 任意值 | > 上端输入 | 任意值 |
| 输出 | 10 | |||
0;;1;;2;;3:4::5:6::7:8
| 规则组 | 端口 | 上端 | 右端 | 下端 | 左端 |
|---|---|---|---|---|---|
| 1 | 上 3 轮输入 | = 0 | 任意值 | 任意值 | 任意值 |
| 上 2 轮输入 | = 1 | 任意值 | 任意值 | 任意值 | |
| 上 1 轮输入 | = 2 | 任意值 | 任意值 | 任意值 | |
| 当前输入 | = 3 | 任意值 | 任意值 | 任意值 | |
| 输出 | 10 | ||||
| 2 | 当前输入 | = 5 | 任意值 | 任意值 | 任意值 |
| 输出 | 6 | ||||
| 3 | 当前输入 | = 6 | 任意值 | 任意值 | 任意值 |
| 输出 | 7 | ||||
true;true;Min(i1,i2),Max(i1,i2):i1+i2
| 端口 | 上端 | 右端 | 下端 | 左端 |
|---|---|---|---|---|
| 当前输入 | 任意值 | 任意值 | = 上端输入 和 右端输入 中更小的 | = 上端输入 和 右端输入 中更大的 |
| 输出 | 上端输入 + 右端输入 | |||
具体用法
通过以上例子,你可能已经对十亿伏特真值表用法有了初步的认识,下面是具体用法
- 4 个输入规则之间用英文分号
;分隔,顺序为上端右端下端左端,之后为表述方便,其输入分别称作为输入 1输入 2输入 3输入 4,而其值在表达式中分别写作i1i2i3i4 - 如果输入 1、2 需要设定规则,输入 3、4 可以为任意值,则输入 3、4的规则可以省略不写,但也不能加上多余的
; - 如果要给输入 1、3设定规则,而输入 2 可以为任意值,需要给输入 2 设定规则
true - 如果输入规则的开头是
=!=><这四种运算符之一,真值表会根据这是第几个输入,自动在开头加上i1i2i3i4,当然你也可以自己加上 - 如果输入规则不是
true,且不包含=!not><and&&||or中的任意一个运算符,此Mod会自动在开头加上i1=i2=i3=i4= - 使用两个英文分号
;;来分隔时序,越左边时序越早,最右边的时序是现在的输入,最多取得 15 轮次之前的输入 - 每次输入发生变化时,轮次加 1
- 只有输入规则的计算结果是
true时,才会计算下一个输入规则,然后计算下一组时序,直到所有规则计算结果均为true,才会输出此组规则设定的输出 - 使用英文冒号
:来分隔输入规则和输出规则,输出规则的计算结果必须为自然数(>=0 的整数) - 使用两个英文冒号
::来分隔多组输入输出规则,当第一组规则不输出时,则计算下一组规则,直到有输出为止,不再计算下一组规则,最多 232-1 组规则 - 过程中出现任何错误均会直接停止计算并输出 0 V,错误详见游戏日志
- 数字默认为十进制,如要使用十六进制数字,请在十六进制数字前加上
0x,二进制则在其前面加上0b,非十进制时不支持小数点
⚠️ 注意
规则对大小写敏感!
关于 NCalc
如果想了解更多有关 NCalc 的信息,可阅读:

