----------Rimski 4isla: r(i,1). f(x):-r(A,B),B=B,E<=X),write(A),X1 is X-B,f(X1). -------------Diferencirane: d(c,1). d(x,0):-number(x). d(X+Y,DX+DY):-d(X,DX),d(Y,DY). d(X*Y,DX*Y+DY*X):-d(X,DX),d(Y,DY). d(sin(X),cos(X)*DX):-d(X,DX). -------------Purvi element na spisak: first(H,[H|T]). ---------------Posleden : last(X,[X|[]]). last(X,[H|T]):-last(X,T). --------------Dali e list : list([]). list([H|T]). --------------Memeber : member(X,[X|T]). member(X,[H|T]):-member(X,T). --------------Obsht element : oe(A,B):-member(X,A),member(X,B). ---------------Duljna : length(0,[]). length(N,[H|T]):-length(M,T),N is M+1. --------------minimalen element min(X,[X]). min(X,[H|T]):-min(Y,T),m(X,H,Y). ===========minimalen ot dva : m(H,H,Y):-H=Y. --------------vtori na4in za min min(X,L):-member(X,L),not(member(Y,L),X > Y). append([],B,B). append([H,T],B,[H|X]):-append(T,B,X). --------------prefiks preffix([],A). prefiix([X],[X|T]). preffix([X|T1],[X,T2]):-preffix(T1,T2). -----------podspisak sublist([],B). sublist(A,[H|T]):-preffix(A,[H|T]),sublist(A,T). -----------remove remove(X,[H|T],T). remove(X,[H|T],[H|L1]):-remove(X,T,L1). ----------reverse reverse([],[]). reverse([H|T],L):-reverse(T,L1),append(L1,[H],L). ------------sort sort([],[]). sort(L1,L2):-min(X,L1),remove(X,L1,L2),sort(L3,L4),L2 is [X|L4]. ---------------permutacii perm([],[]). perm(L,[H|T]):-member(H,L),remove(H,L,L1),perm(L1,T). ----------------sortiran li e issorted([]). issorted([H|T]):-min(H,[H|T]),issorted(T). issorted([]). issorted([M]). issorted([A,B|H]):-A<=B,issorted([B|H]). --------------------sorted sort(L,S):-perm(L,S),issorted(S). ---------------- perm(L,[H|T]):-set(L,S),member(H,S),remove(H,L,L1),perm(L1,T) -----------------set(L,S). removefirst(H,[H|T],T]. removefirst(H,[A|T],[A|T1]):-A\H,removefirst(H,T,T1). -----dobavqne na element kum naredeno durvo: add(x,[],[[],X,[]]). add(X,[L,T,R],[L1,T,R]):-X=T , add(X,R,R1). ------durvo ot spiskuk mt([],[]). mt([H|T],Tree):-mt(T,T1),add(H,T1,Tree). -----lqvo koren dqsno ltr([],[]). ltr([L,T,R],A):-ltr(L,SL),ltr(R,SR),append(SL,[T|SR],A). -----sortirane 4rez dvoi4no durvo tsort(L,S):mt(L,T),ltr(T,S). -------razcepva spisuk split([],X,[],[]). split([H|T],X,[H|A],B):-H=X,split(T,X,A,B). --------quick sort qsort([],[]). qsort([H|T],Res):-split(T,H,L,R),qsort(L,LL),qsort(R,RR),append(LL,[H|RR],Res). -----generira estestveni 4isla u(0). u(x):-u(N), x is N+1. ----suma na dve 4isla. s(0). s(x):- u(y),u(z), x is y*y + z*z. ----s interval u(A,B,A). u(A,B,X):-A