prolog3.pl 1.2 KB

12345678910111213141516171819202122232425262728
  1. determ(X,X) :- atomic(X), !.
  2. determ(T,Y) :- T =.. [X|Xs], (X = Y ; deterl(Xs, Y)).
  3. deterl([],_) :- !, fail.
  4. deterl([X|Xs],Y) :- determ(X,Y) ; deterl(Xs,Y).
  5. arrange(L1, L2, V, S1, S2) :- part(L1, V, S11,S12), part(L2, V, S21, S22), append(S11,S21,S1), append(S12,S22,S2).
  6. part([X|Xs], V, [X|L1], L2) :- X < V, part(Xs, V, L1, L2).
  7. part([X|Xs], V, L1, [X|L2]) :- X > V, part(Xs, V, L1, L2).
  8. part([V|Xs], V, L1, L2) :- !, part(Xs, V, L1, L2).
  9. part([], _, [], []).
  10. sumoftwo(L, V, X, Y) :- deepmember(X,L), deepmember(Y,L), V is X+Y.
  11. deepmember(X, [X|_]) :- atomic(X).
  12. deepmember(X, [Y|Ys]) :- deepmember(X,Y); deepmember(X,Ys).
  13. deeprev([],[]) :- !.
  14. deeprev([X|Xs], R) :- !, deeprev(X,V), deeprev(Xs,Vs), append(Vs, [V], R).
  15. deeprev(X,X) :- atomic(X).
  16. tripart([X|Xs],P1,P2,[X|L1],L2,L3) :- X < P1, X < P2, !, tripart(Xs, P1, P2, L1, L2, L3).
  17. tripart([X|Xs],P1,P2,L1,[X|L2],L3) :- X >= P1, X =< P2, !, tripart(Xs, P1, P2, L1, L2, L3).
  18. tripart([X|Xs],P1,P2,L1,L2,[X|L3]) :- X > P1, X > P2, !, tripart(Xs, P1, P2, L1, L2, L3).
  19. tripart([],_,_,[],[],[]).
  20. maxsum([X], [Y], R) :- !, R is X + Y.
  21. maxsum([X|Xs], [Y|Ys], T) :- maxsum(Xs,Ys,R), T is X + Y, T > R, !.
  22. maxsum([X|Xs], [Y|Ys], R) :- maxsum(Xs,Ys,R).