编写谓词排序(L)

时间:2012-05-20 12:26:13

标签: prolog

  

编写一个谓词sorted(L),用于测试整数列表是否已排序,[n1,n2,...,nk]其中[n1 < n2 <...< nk]

我迷路了。我怎么能实现这个呢?

1 个答案:

答案 0 :(得分:2)

sorted(L) :- hightolow(L) ; lowtohigh(L).

hightolow([H1,H2|T]) :- H1 >= H2, hightolow([H2|T]).
hightolow([_L]).

lowtohigh([H1,H2|T]) :- H1 =< H2, lowtohigh([H2|T]).
lowtohigh([_L]).

行动中:

6 ?- sorted([1,2,3,7,8]).
true 

7 ?- sorted([1,2,3,7,8,2]).
false.

8 ?- sorted([9,6,3,2]).
true .

9 ?- sorted([9,6,3,2,7]).
false.