gpt4 book ai didi

prolog - X\=Y 和 dif(X,Y) 的区别

转载 作者:行者123 更新时间:2023-12-02 00:09:06 24 4
gpt4 key购买 nike

这有什么区别:

X \= Y

和这段代码:
dif(X, Y)

我认为他们应该表现得一样,但他们没有。这是示例:
n_puta(L, N, X) :- nputa(L, N, 0, X).
nputa([], N, C, _) :- N = C.
nputa([G|R], N, C, X) :- G = X, nputa(R, N, Y, X), C is Y - 1.
nputa([G|R], N, C, X) :- dif(G,X), nputa(R, N, C, X).

这里有一些电话:
?- n_puta([a,a,b,b,b], 2, X).
X = a ;
false.

?- n_puta([a,a,b,a,b,b], 3, X).
X = a ;
X = b ;
false.

X 应该是在列表 L 中恰好出现 N 次的原子。如果我替换 dif(G, X)G \= X ,我没有得到预期的结果。有人能告诉我这两个运营商有什么区别吗?除了 dif(G, X) 之外,我还能使用其他任何东西吗? ?

此示例在 SWI-Prolog 中完美运行,但在 Amzi 中不起作用!序言。

最佳答案

dif/2(\=)/2只要他们的论点有根据,就是一样的。但只有dif/2是一个纯粹的关系,它也适用于变量,并且可以在所有方向上使用。您的示例清楚地表明您应该使用 dif/2在这种情况下,因为您不仅使用谓词进行测试,而且还使用它来生成解决方案。使用最广泛的 Prolog 系统均提供 dif/2 .

关于prolog - X\=Y 和 dif(X,Y) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16560058/

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