Prolog - 比较三个论点的谓词

时间:2018-01-22 07:30:46

标签: prolog logic implication

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

Szymon

1 个答案:

答案 0 :(得分:2)

解决方案非常简单:

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

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

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

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

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

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