检查列表是否有序
Check if list is ordered
我正在尝试比较 list
和 integer
的元素,看看它们是否有序。我正在使用 Amzi!
我尝试了几次,但没有任何效果...:(
ordered([X]).
ordered([N|[N1|L]]) :- N <= N1, ordered([N1|L]).
ordered_([X]).
ordered_([Head,Head1|Tail]) :- Head <= Head1, ordered_([Head1|Tail]).
两个 return no
如果输入此列表:
ordered([1,2,3,4]).
ordered_([1,2,3,4]).
我知道我需要比较 head
和 head of the tail
。
看起来不应该比
更复杂
ordered( [] ) .
ordered( [_] ) .
ordered( [X,Y|Z] ) :- X =< Y , ordered( [Y|Z] ) .
此处涵盖算术比较谓词:http://www.amzi.com/manuals/amzi/pro/ref_math.htm#MathematicalComparisons
使用@=</2
或compare/3
检查术语标准顺序中的事物顺序:http://www.amzi.com/manuals/amzi/pro/ref_manipulating_terms.htm#StandardOrder
一个紧凑的替代方案:
ordered(L) :- \+ ( append(_,[A,B|_], L), A > B ).
最受好评的解决方案的更有效替代方案,比较三个而不是将更大的元素追加回列表
is_sorted([]).
is_sorted([X, Y, Z|T]) :- X =< Y, Y =< Z, is_sorted(T).
is_sorted([X, Y|T]) :- X =< Y, is_sorted(T).
我正在尝试比较 list
和 integer
的元素,看看它们是否有序。我正在使用 Amzi!
我尝试了几次,但没有任何效果...:(
ordered([X]).
ordered([N|[N1|L]]) :- N <= N1, ordered([N1|L]).
ordered_([X]).
ordered_([Head,Head1|Tail]) :- Head <= Head1, ordered_([Head1|Tail]).
两个 return no
如果输入此列表:
ordered([1,2,3,4]).
ordered_([1,2,3,4]).
我知道我需要比较 head
和 head of the tail
。
看起来不应该比
更复杂ordered( [] ) .
ordered( [_] ) .
ordered( [X,Y|Z] ) :- X =< Y , ordered( [Y|Z] ) .
此处涵盖算术比较谓词:http://www.amzi.com/manuals/amzi/pro/ref_math.htm#MathematicalComparisons
使用@=</2
或compare/3
检查术语标准顺序中的事物顺序:http://www.amzi.com/manuals/amzi/pro/ref_manipulating_terms.htm#StandardOrder
一个紧凑的替代方案:
ordered(L) :- \+ ( append(_,[A,B|_], L), A > B ).
最受好评的解决方案的更有效替代方案,比较三个而不是将更大的元素追加回列表
is_sorted([]).
is_sorted([X, Y, Z|T]) :- X =< Y, Y =< Z, is_sorted(T).
is_sorted([X, Y|T]) :- X =< Y, is_sorted(T).