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