28 lines
818 B
Prolog
28 lines
818 B
Prolog
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). |