gpt4 book ai didi

prolog - 如果 M 和 N 的差异大于 X,则序言中的谓词为真

转载 作者:行者123 更新时间:2023-12-02 08:11:13 25 4
gpt4 key购买 nike

首先,我对 prolog 完全陌生,我正在尝试编写一个谓词 length(M,X,N),如果 M 与 N 的差异大于 X,则该谓词为真。

我编写了以下测试用例,如果 M(=dec.5) 和 N(=dec.2) 的差异大于 X(=dec.2),则该测试用例为真。在这种情况下也是如此,因为 5 和 2 的差值 3 大于 2:

?- length(s(s(s(s(s(0))))), s(s(0)), s(s(0))).
true .

我知道 prolog 是递归工作的,所以我想知道我是否可以像在 C 语言中那样用条件(例如 <,>)构造这样的谓词,或者在 prolog 中是否有另一种方法可以做到这一点。很抱歉这个简单的问题,但我刚开始使用 prolog。

最佳答案

您可以为 greater 或 less 构造谓词。例如:

greater_than(s(_), 0).
greater_than(s(X), s(Y)) :-
greater_than(X, Y).

类似地:

less_than(0, s(_)).
less_than(s(X), s(Y)) :-
less_than(X, Y).

如果你想找到绝对差异,你可以这样做:

abs_diff(0, 0, 0).
abs_diff(s(X), 0, s(X)).
abs_diff(0, s(X), s(X)).
abs_diff(s(X), s(Y), D) :-
abs_diff(X, Y, D).

这些概念应该有助于启动一些关于如何解决其余问题的想法。

关于prolog - 如果 M 和 N 的差异大于 X,则序言中的谓词为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46862109/

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