123456789101112131415161718192021222324252627282930313233 |
- maxsum([X], [Y], M) :- M is X+Y, !.
- maxsum([X|Xs], [Y|Ys], V) :- V is X+Y, maxsum(Xs, Ys, M), V > M, !.
- maxsum([_|Xs], [_|Ys], M) :- maxsum(Xs, Ys, M).
- lile(L) :- length(L,X), member(X,L).
- lileg(L) :- lile(L), iflc(L).
- iflc([]) :- !.
- iflc([X|Xs]) :- atomic(X), !, iflc(Xs).
- iflc([X|Xs]) :- lileg(X), iflc(Xs).
- arrange(L1,L2,V,S1,S2) :- part(L1,V,S11,S12), part(L2,V,S21,S22), append(S11,S21,S1), append(S12,S22,S2).
- part([],_,[],[]).
- part([X|Xs],V,[X|L1],L2) :- X < V, !, part(Xs,V,L1,L2).
- part([X|Xs],V,L1,[X|L2]) :- X > V, !, part(Xs,V,L1,L2).
- part([_|Xs],V,L1,L2) :- part(Xs,V,L1,L2).
- sumoftwo(L,N,X,Y) :- deepmember(X,L), deepmember(Y,L), N is X+Y.
- deepmember(X,[X|_]) :- atomic(X).
- deepmember(X,[Y|Ys]) :- deepmember(X,Y) ; deepmember(X,Ys).
- deeprev([],[]) :- !.
- deeprev([X|Xs], F) :- !, deeprev(X,R), deeprev(Xs,Vs), append(Vs,[R],F).
- deeprev(X,X).
- palindrome(X) :- reverse(X,Y), X == Y.
- pack([], []).
- pack([X|XS], [Z|ZS]) :- pack_helper(X, XS, YS, Z), pack(YS, ZS).
- % third arg is the rest of the list, fourth is the list of the adiacent occurences of X
- pack_helper(X, [], [], [X]).
- pack_helper(X, [Y|YS], [Y|YS], [X]) :- X \= Y.
- pack_helper(X, [X|XS], YS, [X|ZS]) :- pack_helper(X, XS, YS, ZS).
|