List 检查列表是否已排序
我试图比较List 检查列表是否已排序,list,prolog,List,Prolog,我试图比较整型的列表中的元素,看看它们是否有序。我正在使用Amzi 我试了几次,但都没用…:( 我知道我需要比较头部和尾部的头部似乎并不比 ordered( [] ) . ordered( [_] ) . ordered( [X,Y|Z] ) :- X =< Y , ordered( [Y|Z] ) . 有序([])。 有序的。 有序([X,Y | Z]):-X=
整型的列表
中的元素,看看它们是否有序。我正在使用Amzi代码>
我试了几次,但都没用…:(
我知道我需要比较头部
和尾部的头部
似乎并不比
ordered( [] ) .
ordered( [_] ) .
ordered( [X,Y|Z] ) :- X =< Y , ordered( [Y|Z] ) .
有序([])。
有序的。
有序([X,Y | Z]):-X=
这里介绍了算术比较谓词:
使用@=似乎并不比
ordered( [] ) .
ordered( [_] ) .
ordered( [X,Y|Z] ) :- X =< Y , ordered( [Y|Z] ) .
有序([])。
有序的。
有序([X,Y | Z]):-X=
这里介绍了算术比较谓词:
使用紧凑的替代方案:
ordered(L) :- \+ ( append(_,[A,B|_], L), A > B ).
紧凑的替代方案:
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).
已排序([])。
已排序([X,Y,Z | T]):-X=
比多数上档方案更有效,比较三种方案,而不是将较大的元素追加到列表中
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).
已排序([])。
已排序([X,Y,Z | T]):-X=
a打字错误:检查@capelic和@repeat,你们是否正确,我用=@NickeManarin进行了测试。好吧!出于好奇:你们是否在中出现语法错误否,这是一个简单的错误…我应该在更改为a打字错误后保存并重新向听众询问:检查@capelic和@repeat,你们是否正确,我用=@NickeManarin进行了测试。好吧!出于好奇:你在中遇到语法错误了吗?不,这是一个简单的错误…我应该在更改为后保存并重新查询侦听器,因为已排序([8,9,2,3])。
效率也较低,因为已排序([1,2,3,4,5]).
成功两次。
被排序([8,9,2,3])错误地成功。
效率也较低,因为被排序([1,2,3,4,5])。
成功两次。意外的创造性方法。感谢我的大脑进行了额外的锻炼。被排序(非列表)
成功出乎意料的创造性方法。感谢您对我的大脑进行额外的锻炼。有序(非列表)
成功