prolog1.pl 708 B

123456789101112131415161718192021222324252627282930
  1. find([X|_], X).
  2. find([_|L], X) :- find(L,X).
  3. concatenate([X|L1], L2, [X|L3]) :- concatenate(L1,L2,L3).
  4. concatenate([],L,L).
  5. pow(_,0,1).
  6. pow(X,1,X) :- !.
  7. pow(X,N,R) :- N1 is N-1, pow(X,N1,R1), R is X*R1.
  8. powb(_,0,1) :- !.
  9. powb(X,1,X) :- !.
  10. powb(X,N,R) :- N1 is N-1, powb(X,N1,R1), R is R1*X.
  11. part([X|L],Y,[X|L1],L2) :- X =< Y, !, part(L,Y,L1,L2).
  12. part([X|L],Y,L1,[X|L2]) :- X > Y, !, part(L,Y,L1,L2).
  13. part([],_,[],[]).
  14. quicksort([],[]).
  15. quicksort([H|T], Sorted) :- part(T,H,L1,L2), !, quicksort(L1,Sorted1), quicksort(L2,Sorted2), append(Sorted1,[H|Sorted2],Sorted).
  16. map(_,[],[]).
  17. map(C,[X|Xs],[Y|Ys]) :- call(C,X,Y), !, map(C,Xs,Ys).
  18. square(N,R) :- R is N*N.
  19. not(X) :- call(X), !, fail.
  20. not(_).