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<R,!,
	select_min2(T,M,H).
select_min2([_|T],M,R):-
	select_min2(T,M,R).

sel_sort(X,Y):-
	sel_sort(X,Y,[]).
sel_sort([],X,Y):-
	reverse(X,Y).
sel_sort(X,Y,Z):-
	select_min(X,M,R),
	select(M,X,R),
	!,
	sel_sort(R,Y,[M|Z]).

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=<H,
	W=[E,H|T].

ins_sort(L,W):-
	ins_sort(L,W,[]).
ins_sort([],X,X).
ins_sort([H|T],W,B):-
	insert(B,H,B2),
	ins_sort(T,W,B2).
 
programowanie/lista3l.txt · ostatnio zmienione: 2010/03/16 09:43 przez shajen
 
Wszystkie treści w tym wiki, którym nie przyporządkowano licencji, podlegają licencji:MIT License
Recent changes RSS feed