我是 prolog 的新手,我已经完成了一些编码,但是我有一个我无法处理的任务。您能否告诉我如何描述一个有效的谓词,它比较 arg1、arg2 和 arg3 并返回是它 arg1>arg2>arg3?提前谢谢了!
席蒙
我是 prolog 的新手,我已经完成了一些编码,但是我有一个我无法处理的任务。您能否告诉我如何描述一个有效的谓词,它比较 arg1、arg2 和 arg3 并返回是它 arg1>arg2>arg3?提前谢谢了!
席蒙
解决方案很简单:
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。