Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,26 @@
% True if S is a sorted copy of L, using merge sort
msort([],[]).
msort([X],[X]).
msort(U,S) :-
split(U, L, R),
msort(L, SL),
msort(R, SR),
merge(SL, SR, S).
% split(LIST,L,R)
% Alternate elements of LIST in L and R
split([],[],[]).
split([X],[X],[]).
split([L,R|T],[L|LT],[R|RT]) :-
split( T, LT, RT ).
% merge( LS, RS, M )
% Assuming LS and RS are sorted, True if M is the sorted merge of the two
merge([],RS,RS).
merge(LS,[],LS).
merge([L|LS],[R|RS],[L|T]) :-
L @=< R,
merge(LS,[R|RS],T).
merge([L|LS],[R|RS],[R|T]) :-
L @> R,
merge([L|LS],RS,T).