Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Сортировка подсписка в списке

#сортировка #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).

Комментариев нет:

Отправить комментарий