编写一个谓词
sorted(L)
,用于测试整数列表是否已排序,[n1,n2,...,nk]
其中[n1 < n2 <...< nk]
。
我迷路了。我怎么能实现这个呢?
答案 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.