DOMAINS
list=real*
PREDICATES
lcard(list,real)
lcard(list,real,real)
lconcat(list,list,list)
lconcat2(list,list,list)
revers(list,list)
revers(list,list,list)
ladun(list,list,list)
ladun(list,list,list,list)
linmult(list,real,list)
linmult(list,real,list,list)
prods(list,list,real)
prods(list,list,real,real)
rlindexof(list,real,list)
rlindexof(list,real,real,list,list)
%llindexof(list,list,list)
%llindexof(list,list,real,list,list)
l3concat(list,list,list,list)
CLAUSES
%__________CARDINALUL_UNEI_LISTE_______________________
lcard(L,R):-lcard(L,0,R).
lcard([],Ria,Ria).
lcard([H|Tail],Ri,R):-Ria=Ri+1,lcard(Tail,Ria,R).
%__________CONCATENAREA_A_DOUA_LISTE_(A_D0UA_DE_PRIMA__
lconcat([],L,L).
lconcat([H1|T1],L2,[H1|T3]):-lconcat(T1,L2,T3).
%__________CONCATENAREA_A_DOUA_LISTE_(PRIMA_DE_A_DOUA)_
lconcat2(L,[],L).
lconcat2(L1,[H2|T2],[H2|T3]):-lconcat2(L1,T2,T3).
%__________INVERSARAE_UNEI_LISTE_______________________
revers(L,R):-revers(L,[],R).
revers([],Ri,Ri).
revers([H|T],Li,R):-lconcat([H],Li,Ri),
revers(T,Ri,R).
%__________ADUNAREA_A_DOUA_LISTE_______________________
ladun(L1,L2,L3):-lcard(L1,C1),
lcard(L2,C2),
C1=C2,
ladun(L1,L2,[],L3),!;
write("Nu au aceeasi lungime."),fail.
ladun([],[],Lia,Lia).
ladun([H1|T1],[H2|T2],Li,L3):-S=H1+H2,
lconcat([S],Li,Lia),
ladun(T1,T2,Lia,L3).
%__________INMULTIREA_UNEI_LISTE_CU_UN_SCALAR___________
linmult(L,X,R):-linmult(L,X,[],R).
linmult([],X,Lia,Lia).
linmult([H|T],X,Li,R):-C=H*X,
lconcat(Li,[C],Lia),
linmult(T,X,Lia,R).
%__________PRODUSUL_SCALAR_A_DOUA_LISTE_________________
prods(L1,L2,R):-lcard(L1,C1),
lcard(L2,C2),
C1=C2,
prods(L1,L2,0,R),!;
write("Tre' sa fie egale."),fail.
prods([],[],Ria,Ria).
prods([H1|T1],[H2|T2],Ri,R):-Ria=Ri+(H1*H2),
prods(T1,T2,Ria,R).
%__________INDEX_OF_N_IN_LISTA_________________________
rlindexof(L,N,Lr):-rlindexof(L,N,0,[],Lr).
rlindexof([],N,Conti,Lia,Lia).
rlindexof([H|Tail],N,Cont,Li,Lr):-
Conti=Cont+1,
H=N,
lconcat(Li,[Conti],Lia),
rlindexof(Tail,N,Conti,Lia,Lr);
H<>N,
Conti=Cont+1,
rlindexof(Tail,N,Conti,Li,Lr).
%__________INDEX_OF_L_IN_LISTA_____________________
/*llindexof(L1,L2,L3):-llindexof(L1,L2,0,[],L3).
llindexof([],L2,Conti,Lia,Lia).
llindexof([H1|T1],L2,Cont,Li,L3):-
lcard(L1,Card1),
rlindexof(L2,H1,Lu),
lcard(Lu,Cardu),
Card1=Cardu,
Conti=Cont+1,
lconcat(Li,[Conti],Lia),
llindexof(T1,L2,Conti,Lia,L3);
rlindexof(L2,H1,Lu),
lcard(L1,Card1),
lcard(Lu,Cardu),
Card1<>Cardu,
Conti=Cont+1,
llindexof(T1,L2,Conti,Li,L3).*/
%____________________
l3concat(X,L1,Y,L2):-lconcat(X,L1,X1),
lconcat(X1,Y,L2).
Tuesday, 30 October 2007
Publicat de
pau
la
05:34
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment