-4

我是 prolog 的新手,我已经完成了一些编码,但是我有一个我无法处理的任务。您能否告诉我如何描述一个有效的谓词,它比较 arg1、arg2 和 arg3 并返回是它 arg1>arg2>arg3?提前谢谢了!

席蒙

4

1 回答 1

2

解决方案很简单:

compare3(X, Y, Z):-
    X>Y,
    Y>Z.

?- compare3(5,4,3).
true.

请记住,您不能使用任意数量的输入参数定义谓词(因此显然compare/3只能使用 3 个输入来调用)。为了使其更灵活,您可以将元素插入列表并像这样重写它

myCompare([]).
myCompare([_]):- !.
myCompare([A,B|T]):-
    A>B,
    myCompare([B|T]).

?- myCompare([5,4,3]).
true.

现在myCompare/1接受一个列表,如果列表已排序,则返回 true,否则返回 false。

于 2018-01-22T12:54:05.727 回答