转载自:https://mp.weixin.qq.com/s/jbKyrbClPMjVwQV3ELPHGg
28、根据子列表的长度对列表中的子列表进行排序
a)长度排序
lsort(InList,OutList) :- 假定InList是由子列表组成的列表。然后根据元素的长度对元素进行排序,从InList中得到排好序的列表OutList。 lsort/2升序排序,lsort / 3允许升序或降序排序。
lsort(InList,OutList) :-
lsort(InList,OutList,asc).
排序方向Dir为asc或desc
1 lsort(InList,OutList,Dir) :-
2 add_key(InList,KList,Dir),
3 keysort(KList,SKList),
4 rem_key(SKList,OutList).
5
6 add_key([],[],_).
7 add_key([X|Xs],[L-p(X)|Ys],asc) :-
8 !,
9 length(X,L),
10 add_key