#сортировка #list #prolog
Как сделать так, чтобы сортировался и подсписок.
Нужно:
?- elsort([d,s,a,[r,t,h]],X).
X = [a, d, s, [h, r, t]].
а получается:
?- elsort([d,s,a,[r,t,h]],X).
X = [a, d, s, [r, t, h]].
Вот сам код:
elsort([],[]).
elsort([A|B],C):-
elsort(B,D),
elsortx(A,D,C).
elsortx(A,[X|B],[X|C]):-
order(X,A),
!,
elsortx(A,B,C).
elsortx(A,B,[A|B]).
order(A,A2):-
A @< A2.
Заранее спасибо за помощь.
Ответы
Ответ 1
% Сортировка списков, соджержащих подсписки sort_nested( [], [] ). sort_nested( [ H | T ], R ) :- atomic( H ), sort_nested( T, W ), insert( H, W, R ). sort_nested( [ X | T ], R ) :- \+ atomic( X ), sort_nested( X, Xs ), sort_nested( T, W ), insert( Xs, W, R ). % insert(X, [], [X]). insert(X, [H|T], [X|L]):- X @< H, insert(H, T, L). insert(X, [H|T], [H|L]):- X @>= H, insert(X, T, L).
Комментариев нет:
Отправить комментарий