gpt4 book ai didi

j - J 中带/~ 的真值表

转载 作者:行者123 更新时间:2023-12-02 20:19:57 26 4
gpt4 key购买 nike

我正在尝试在 J 中生成真值表:

    nand =: *:
nand /~ 0 1
1 1
1 0
bxor =: 22 b. NB. Built-in bitwise XOR
bxor /~ 0 1
0 1
1 0

现在我想定义我自己的逻辑异或,我这样做了:

    xor =: 3 : 0
]y NB. monadic case is just the identity
:
(x*.-.y)+.(y*.-.x) NB. dyadic case is (x AND NOT y) OR (y AND NOT x)
)

当我直接调用它时,它会按我的预期工作。

    0 xor 0 1
0 1
1 xor 0 1
1 0

但它不会生成真值表:

    xor /~ 0 1
0 0

为什么不呢?

我想问题可能是 ]/~ 0 1 本身生成了一个 1 x 2 数组,所以我将 monadic 部分更改为使用 nand (*:y )因为它生成 2x2 数组:

    *:/~ 0 1
1 1
1 0


xor =: 3 : 0
*:y NB. certainly wrong, but at least has 2x2 shape.
:
(x*.-.y)+.(y*.-.x)
)

但我仍然得到相同的行为:

    xor /~ 0 1
0 0

有人可以帮助我理解我的想法中的缺陷吗?

最佳答案

您的xor具有无限等级,而*:~:具有等级0。您可以使用b.来验证这一点。 : v b. 0 像这样:

~: b. 0
_ 0 0

*: b. 0
0 0 0

xor b. 0
_ _ _

这意味着 xor 对列表 0 1 进行操作,而不是对每个单独的原子 01.

如果您使用等级为 0 的 xor,您将获得预期的结果:

xor"0 /~ 0 1
0 1
1 0

或者,如果您将 xor 定义为等级 0。

关于j - J 中带/~ 的真值表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11341913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com