0

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

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

4

1 回答 1

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.
于 2012-05-20T12:47:17.703 回答