#сортировка #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).
Комментариев нет:
Отправить комментарий