todo_app/sort.pl

28 lines
818 B
Perl
Raw Normal View History

2024-06-21 21:19:56 +02:00
countWords([],0).
countWords([_|X],N) :- countWords(X,PrevN), N is PrevN + 1.
checkEachTask([], []).
checkEachTask([X|Xs], [[COUNTER, X]|Final]) :-
split_string(X, " ", "", SPLITTED),
countWords(SPLITTED, COUNTER),
checkEachTask(Xs, Final).
divide([], [], []).
divide([A], [A], []).
divide([A, B|L], [A|L1], [B|L2]) :- divide(L, L1, L2).
merge([], B, B).
merge(A, [], A).
merge([[A1, A2]|As], [[B1, B2]|Bs], [[A1, A2]|Rest]) :- A1 >= B1, merge(As, [[B1, B2]|Bs], Rest).
merge([[A1, A2]|As], [[B1, B2]|Bs], [[B1, B2]|Rest]) :- A1 < B1, merge([[A1, A2]|As], Bs, Rest).
mergesort([], []).
mergesort([A], [A]).
mergesort(A, Sorted) :-
divide(A, Front, Back),
mergesort(Front, SortedFront),
mergesort(Back, SortedBack),
merge(SortedFront, SortedBack, Sorted).