====== Programowanie - Lista 3 (Lic.) ====== ===== Zadanie 1. ===== filter([],[]). filter([H|T],[H|PLUS]) :- H > 0,!, filter(T,PLUS). filter([H|T],PLUS) :- filter(T,PLUS). count(_,[],0). count(N,[N|T],C) :- count(N,T,C1), C is C1 + 1, !. count(N,[_|T],C) :- count(N,T,C). count(X,Y,N):-count(X,Y,N,0). (wersja ogonowa) count([],_,X,X):-!. count([H|X],[H|Y],N,M):- B is M+1, count(X,Y,N,B). count(X,[_|Y],N,M):- count(X,Y,N,M). exp(A, 0, 1). exp(A, P, R) :- P > 0, P1 is P - 1, exp(A, P1, S), R is S * A. ===== Zadanie 2. ===== factorial(N, M) :- factorial(N, 1, M). factorial(0, A, A). factorial(N, A, M) :- N > 0, N1 is N - 1, A1 is A * N, factorial(N1, A1, M). concat_number(D, N) :- concat_number(D, 0, N). concat_number([], A, A). concat_number([H|T], A, R) :- A1 is A * 10 + H, concat_number(T, A1, R). decimal(N, M) :- N > 0, dec_(N, X), reverse(M, X). dec_(N, [N]) :- N is N mod 10. dec_(N, [H|T]) :- H is N mod 10, Nh is (N - H) / 10, dec_(Nh, T). ===== Zadanie 3. ===== select_min([H|S],M,R):- select_min2([H|S],M,H), select(M,[H|S],R). select_min2([],M,M). select_min2([H|T],M,R):- H ===== Zadanie 4. ===== insert([H|T],E,W):- E>H, select(H,W,W2),!, insert(T,E,W2). insert([],E,[E]). insert([H|T],E,W):- E=