12345678910111213141516171819202122232425262728 |
- determ(X,X) :- atomic(X), !.
- determ(T,Y) :- T =.. [X|Xs], (X = Y ; deterl(Xs, Y)).
- deterl([],_) :- !, fail.
- deterl([X|Xs],Y) :- determ(X,Y) ; deterl(Xs,Y).
- 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([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([V|Xs], V, L1, L2) :- !, part(Xs, V, L1, L2).
- part([], _, [], []).
- sumoftwo(L, V, X, Y) :- deepmember(X,L), deepmember(Y,L), V is X+Y.
- deepmember(X, [X|_]) :- atomic(X).
- deepmember(X, [Y|Ys]) :- deepmember(X,Y); deepmember(X,Ys).
- deeprev([],[]) :- !.
- deeprev([X|Xs], R) :- !, deeprev(X,V), deeprev(Xs,Vs), append(Vs, [V], R).
- deeprev(X,X) :- atomic(X).
- tripart([X|Xs],P1,P2,[X|L1],L2,L3) :- X < P1, X < P2, !, tripart(Xs, P1, P2, L1, L2, L3).
- tripart([X|Xs],P1,P2,L1,[X|L2],L3) :- X >= P1, X =< P2, !, tripart(Xs, P1, P2, L1, L2, L3).
- tripart([X|Xs],P1,P2,L1,L2,[X|L3]) :- X > P1, X > P2, !, tripart(Xs, P1, P2, L1, L2, L3).
- tripart([],_,_,[],[],[]).
- maxsum([X], [Y], R) :- !, R is X + Y.
- maxsum([X|Xs], [Y|Ys], T) :- maxsum(Xs,Ys,R), T is X + Y, T > R, !.
- maxsum([X|Xs], [Y|Ys], R) :- maxsum(Xs,Ys,R).
|