按深度序言排序深度列表

时间:2017-12-03 19:01:09

标签: sorting prolog nested-lists

我想按每个列表的深度对深度列表进行排序。但我的代码只分离元素,而不是对它们进行排序。到目前为止,我还不了解差异列表以便以其他方式对它们进行排序,所以请让我看看我的代码有什么问题。

insert_ord(X, [H|T], [H|R]):- 
     X > H, !, 
     insert_ord(X, T, R).
insert_ord(X, T, [X|T]).

ins_sort([H|T], R):- 
     ins_sort(T, R1), 
     insert_ord(H, R1, R).
ins_sort([], []).

ord([H|L], [R1|R]):-
     is_list(H),
     ord(H, R1),
ord(L,R).

ord(L,R):-
     ins_sort(L, R).
ord([],[]).

因此,这个谓词应该产生以下结果:

ord([[[[1]]], 2, [5,[4],7], [[5],4], [5,[0,9]]], R).

R = [2, [5,[0,9]], [[5],4], [5,[4],7], [[[1]]]] ;
false

0 个答案:

没有答案