Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tree(t(6, t(4, t(2, nil, nil), t(5, nil, nil)), t(9, t(7, nil, nil), nil))).
- tree_i(t(6, t(4, t(2, _, _), t(5, _, _)), t(9, t(7, _, _), _))).
- tree2(t(a,t(b,t(d,t(g,_,_,_),t(h,_,_,_),_),t(e,_,_,_),_),t(c,_,t(f,t(i,_,_,_),t(j,_,_,_),_),_),_)).
- cmmdc(A,B,A):-A=B.
- cmmdc(A,B,R):-B>A,R1 is B-A ,cmmdc(A,R1,R).
- cmmdc(A,B,R):-A>B,R1 is A-B,cmmdc(R1,B,R).
- cmmmc(A,B,R):-R1 is A*B,cmmdc(A,B,R2),R is R1/R2.
- sum([],0).
- sum([H|K],R):-sum(K,R1),R is R1+H.
- add_first(X,L,R):- R=[X|L].
- separate_parity([],[],[]).
- separate_parity([H|K],E,O):-1 is H mod 2, separate_parity(K,E,R),O=[H|R].
- separate_parity([H|K],E,O):-separate_parity(K,R,O),E=[H|R].
- replace_all(_,_,[],[]):-!.
- replace_all(X,Y,[X|K],[Y|R]):-replace_all(X,Y,K,R),!.
- replace_all(X,Y,[H|K],[H|R]):-replace_all(X,Y,K,R),!.
- sterge_k_1([],_,_,[]):-!.
- sterge_k_1([_|K],X,C,R):-0 is C mod X,C1 is C+1,!,sterge_k_1(K,X,C1,R).
- sterge_k_1([H|K],X,C,[H|R]):-C1 is C+1,sterge_k_1(K,X,C1,R).
- sterge_k(L,X,R):-sterge_k_1(L,X,1,R).
- append_li(L,L2,L2):-var(L),!.
- append_li([H|T],L2,[H|R]):-append_li(T,L2,R).
- reverse_li(L,_):-var(L),!.
- reverse_li([H|T],R):-reverse_li(T,R1),!,append_li(R1,[H|_],R).
- reverse1([],[]):-!.
- reverse1([H|T],R):-reverse1(T,R1),!,append(R1,[H],R).
- max(A,B,A):-A>B.
- max(_,B,B).
- adancime([],1).
- adancime([H|T],R):-atomic(H),adancime(T,R).
- adancime([H|T],R):-adancime(H,R1),adancime(T,R2),R3 is R1+1,max(R2,R3,R).
- flat([],[]).
- flat([H|T],[H|R]):-atomic(H),flat(T,R).
- flat([H|T],R):-flat(H,R1),flat(T,R2),append(R1,R2,R).
- flat_li(L,_):-var(L),!.
- flat_li([H|T],[H|R]):-atomic(H),!,flat_li(T,R).
- flat_li([H|T],R):-flat_li(H,R1),flat_li(T,R2),append_li(R1,R2,R).
- adancimeT(nil,0):-!.
- adancimeT(t(_,L,R),Rez):-adancimeT(L,R1),adancimeT(R,R2),max(R1,R2,R3),Rez is R3+1,!.
- adancimeTI(L,0):-var(L),!.
- adancimeTI(t(_,L,R),Rez):-adancimeTI(L,R1),adancimeTI(R,R2),max(R1,R2,R3),Rez is R3+1,!.
- inordine(nil,[]).
- inordine(t(K,L,R),Rez):-inordine(L,LL),inordine(R,LR),append(LL,[K|LR],Rez).
- inordine_dif(nil,L,L).
- inordine_dif(t(K,L,R),RS,RE):-inordine_dif(L,LLS,LLE),inordine_dif(R,LRS,LRE),RS=LLS,LLE=[K|LRS],RE=LRE.
- delete_all(_,[],[]):-!.
- delete_all(X,[X|T],R):-delete_all(X,T,R),!.
- delete_all(X,[H|T],R):-delete_all(X,T,R1),!,R=[H|R1].
- sterge_duplicate([],[]):-!.
- sterge_duplicate([H|T],[H|R]):-member(H,T),delete_all(H,T,R1),sterge_duplicate(R1,R),!.
- sterge_duplicate([H|T],[H|R]):-sterge_duplicate(T,R),!.
- min([],Min,Min):-!.
- min([H|T],Min,R):-H<Min,min(T,H,R),!.
- min([_|T],Min,R):-min(T,Min,R).
- min_pretty([H|T],R):-min(T,H,R).
- sterge_min(L,R):-min_pretty(L,R1),delete_all(R1,L,R).
- reverse_k([],_,[]):-!.
- reverse_k(L,0,R1):-reverse1(L,R1),!.
- reverse_k([H|T],K,[H|R]):- K1 is K-1, reverse_k(T,K1,R),!.
- rle_encode([],K,Acc,Acc1):-reverse1(Acc,Acc1),!.
- rle_encode([H|T],K,Acc,R):-atomic(T),add_first([H,K],Acc,Acc1),rle_encode([],K,Acc1,R),!.
- rle_encode([H|H],K,Acc,R):-atomic(H),K1 is K+1,rle_encode(H,K1,Acc,R),!.
- rle_encode([H,H|T],K,Acc,R):-K1 is K+1,rle_encode([H|T],K1,Acc,R),!.
- rle_encode([H1,H2|T],1,Acc,R):-add_first(H1,Acc,Acc1),rle_encode([H2|T],1,Acc1,R),!.
- rle_encode([H1,H2|T],K,Acc,R):-add_first([H1,K],Acc,Acc1),rle_encode([H2|T],1,Acc1,R),!.
- rle_encode_pretty(L,R):-rle_encode(L,1,[],R).
- %rle_encode
- length([],Acc,Acc).
- length([H|T],Acc,R):-Acc1 is Acc+1,length(T,Acc1,R).
- extract_K(_,0,[]).
- extract_K([H|T],K,[H|R]):-K1 is K-1, extract_K(T,K1,R).
- rotate_k(L,K,R):-length(L,0,Len),reverse1(L,R1),
- extract_K(R1,K,R2),reverse1(R2,R3),K1 is Len-K, extract_K(L,K1,R4),
- append(R3,R4,R).
- ins_sort([H|T],R):-ins_sort(T,R1),insert_ord(H,R1,R).
- ins_sort([],[]).
- insert_ord(X,[H|T],[H|R]):-X>H,insert_ord(X,T,R).
- insert_ord(X,T,[X|T]).
- char_cmp(A,B,1):-char_code(A,H1),char_code(B,H2),H1>H2.
- char_cmp(A,B,0).
- max_dep([],M,M).
- max_dep([H|T],M,R):-atomic(H),H>M,max_dep(T,H,R).
- max_dep([H|T],M,R):-atomic(H),max_dep(T,M,R).
- max_dep([H|T],M,R):-max_dep(H,M,R1),max_dep(T,R1,R).
- max_p([H|T],R):-atomic(H),max_dep(T,H,R).
- max_p([H|T],R):-max_p(H,R1),max_dep(T,R1,R).
- sort_chars([H|T],R):-sort_chars(T,R1),!,ins_sort_chars(H,R1,R).
- sort_chars([],[]):-!.
- ins_sort_chars(X,[H|T],[H|R]):-char_cmp(X,H,R1),1 is R1,ins_sort_chars(X,T,R).
- ins_sort_chars(X,T,[X|T]).
- sort_len([H|T],R):-sort_len(T,R1),!,ins_sort_len(H,R1,R).
- sort_len([],[]):-!.
- ins_sort_len(X,[H|T],[H|R]):-length(X,0,L1),length(H,0,L2),L1>L2,ins_sort_len(X,T,R),!.
- ins_sort_len(X,T,[X|T]):-!.
- :-dynamic neighbor/2. % declarăm predicatul dinamic pentru a putea
- %etc.
- neighb_to_edge:-retract(neighbor(Node,List)),!, %extrage un predicat neighbor și apoi îl procesează
- process(Node,List),
- neighb_to_edge.
- neighb_to_edge. % daca nu mai sunt predicate neighbor înseamnă că am terminat
- % procesarea presupune adăugare de predicate edge și node pentru un predicat neighbor
- process(Node, [H|T]):- assertz(edge(Node, H)), process(Node, T).
- process(Node, []):- assertz(node(Node)).
- :-dynamic edge/2.
- :-dynamic node/1.
- node(a).
- node(b).
- node(c).
- node(d).
- edge(a, b).
- edge(a, d).
- edge(b, a).
- edge(b, c).
- edge(b, d).
- edge(c, b).
- edge(c, d).
- edge_to_neighb:- retract(node(A)),assertz(neighbor(A,[])),edge_to_neighb.
- edge_to_neighb:- retract(edge(A,B)),retract(neighbor(A,L)),
- assertz(neighbor(A,[B|L])),edge_to_neighb.
- edge_to_neighb.
- replace_all2(_,_,[],[]).
- replace_all2(X,Y,[X|T],[Y|R]):-replace_all2(X,Y,T,R).
- replace_all2(X,Y,[H|T],[H|R]):- atomic(H),replace_all2(X,Y,T,R).
- replace_all2(X,Y,[H|T],R):- replace_all2(X,Y,H,R1),replace_all2(X,Y,T,R2),add_first(R1,R2,R).
- sum_k([],_,_,Acc,Acc):-!.
- sum_k([H|T],A,K,Acc,R):-A is K,atomic(H),Acc1 is Acc+H,sum_k(T,A,K,Acc1,R),!.
- sum_k([H|T],A,K,Acc,R):-atomic(H),sum_k(T,A,K,Acc,R),!.
- sum_k([H|T],A,K,Acc,R):-A1 is A+1,sum_k(H,A1,K,Acc,R1),sum_k(T,A,K,R1,R),!.
- sum_k_pretty(T,K,R):-sum_k(T,1,K,0,R).
- collect_k(t(K,L,R),A,N,Acc,Rez):-A is N,A1 is A+1,collect_k(L,A1,N,[K|Acc],R1),collect_k(R,A1,N,R1,Rez),!.
- collect_k(t(K,L,R),A,N,Acc,Rez):-A1 is A+1,collect_k(L,A1,N,Acc,R1),collect_k(R,A1,N,R1,Rez),!.
- collect_k(nil,_,_,Acc,Acc):-!.
- collect_k_pretty(t(K,L,R),N,Rez):-collect_k(t(K,L,R),1,N,[],Rez),!.
- insert_key(Key,nil,t(Key,nil,nil)).
- insert_key(Key,t(Key,L,R),t(Key,L,R)).
- insert_key(Key,t(K,L,R),t(K,NL,R)):-Key<K,!,insert_key(Key,L,NL).
- insert_key(Key,t(K,L,R),t(K,L,NR)):-insert_key(Key,R,NR).
- delete_key(Key,t(Key,L,nil),L):-!.
- delete_key(Key,t(Key,nil,R),R):-!.
- delete_key(Key,t(Key,L,R),t(Pred,NL,R)):-get_pred(L,Pred,NL).
- delete_key(Key,t(Key,L,R),t(Key,NL,R)):-Key<K,delete_key(Key,L,NL).
- delete_key(Key,t(Key,L,R),t(Key,L,NR)):-delete_key(Key,R,NR).
- get_pred(t(Pred,L,nil),Pred,L).
- get_pred(t(Key,L,R),Pred,t(Key,L,NR)):-get_pred(R,Pred,NR).
- extract_even(t(K,L,R),A,Acc,Rez):- 0 is A mod 2, 0 is K mod 2,A1 is A+1,
- extract_even(L,A1,[K|Acc],R1),extract_even(R,A1,R1,Rez).
- extract_even(t(K,L,R),A,Acc,Rez):-A1 is A+1,extract_even(L,A1,Acc,R1),
- extract_even(R,A1,R1,Rez).
- extract_even(nil,_,Acc,Acc).
- extract_even_pretty(t(K,L,R),Rez):-extract_even(t(K,L,R),1,[],Rez).
- extract_even_dif(t(K,L,R),A,RS,RE):-0 is A mod 2, 0 is K mod 2,A1 is A+1,
- extract_even_dif(L,A1,LLS,LLE),
- extract_even_dif(R,A1,LRS,LRE),
- RS=[K|LLS],LLE=LRS,RE=LRE.
- extract_even_dif(t(_,L,R),A,RS,RE):-A1 is A+1,
- extract_even_dif(L,A1,LLS,LLE),
- extract_even_dif(R,A1,LRS,LRE),
- RS=LLS,LLE=LRS,RE=LRE.
- extract_even_dif(nil,_,L,L).
- collect_kf(t(K,nil,nil),[K]).
- collect_kf(t(K,L,nil),Rez):-collect_kf(L,Rez).
- collect_kf(t(K,nil,R),Rez):-collect_kf(R,Rez).
- collect_kf(t(_,L,R),Rez):-collect_kf(L,R1),collect_kf(R,R2),append(R1,R2,Rez).
- :-dynamic arc/2.
- :-dynamic nod/1.
- nod(1).
- nod(2).
- nod(3).
- arc(2,1).
- arc(1,2).
- arc(3,1).
- grad_interior(K,Acc,R):-retract(arc(_,K)),Acc1 is Acc+1,grad_interior(K,Acc1,R).
- grad_interior(K,Acc,Acc).
- grad_interior_pretty(K,R):-grad_interior(K,0,R).
- grad_exterior(K,Acc,R):-retract(arc(K,_)),Acc1 is Acc+1,grad_exterior(K,Acc1,R).
- grad_exterior(K,Acc,Acc).
- grad_exterior_pretty(K,R):-grad_exterior(K,0,R).
- collect(R):-retract(nod(K)),collect(R1),R=[K|R1].
- collect([]).
- suma_tot([],_,_,Acc,Acc).
- suma_tot([H|T],M,K,Acc,R):-atomic(H),K is M, Acc1 is Acc+H,suma_tot(T,M,K,Acc1,R).
- suma_tot([H|T],M,K,Acc,R):-atomic(H),suma_tot(T,M,K,Acc,R).
- suma_tot([H|T],M,K,Acc,R):-K1 is K+1,suma_tot(H,M,K1,Acc,R1),suma_tot(T,M,K,R1,R).
- suma(L,R):-adancime(L,R1),suma_tot(L,R1,1,0,R).
- numar(t(_,L,R,N),N):- var(L),var(R),N is 1.
- numar(t(_,L,R,N),N):-var(R),numar(L,R1),N is R1+1.
- numar(t(_,L,R,N),N):-var(L),numar(R,R1),N is R1+1.
- numar(t(_,L,R,N),N):-numar(L,R1),numar(R,R2),N is R1+R2+1.
- :-dynamic muchie/3.
- muchie(a,b,1).
- muchie(a,c,12).
- muchie(b,d,2).
- muchie(c,d,11).
- muchie(d,e,4).
- muchie(d,f,9).
- muchie(e,g,1).
- muchie(f,g,2).
- destinatiip(A,M,C,Acc,R):-C=<M,retract(muchie(A,B,N)),C1 is C+N,
- Acc1=[A|Acc],destinatiip(B,M,C1,Acc1,R).
- destinatiip(A,M,C,Acc,R):-C=<M,retract(muchie(B,A,N)),C1 is C+N,
- Acc1=[A|Acc],destinatiip(B,M,C1,Acc1,R).
- destinatiip(A,_,_,Acc,Acc).
- destinatii(A,M,R):-destinatiip(A,M,0,[],R).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement