Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -module(a).
- -export([
- silnia/1,fib/1,parzysta/1,zera/1,zera2/1,zera3/2,
- abss/1,nalezy/2,silnia2/1,silnia3/2,
- dlugosc/1,dodaj/2,odwrotnosc/1,ilosc/2,ilosc2/2,ilosc3/3,
- fib2/1,fib3/3,parzysta2/1,parzysta3/2,abs2/1,abs3/2,
- ostatni2/1,ostatni3/2,nalezy2/2,nalezy3/3,srednia_listy/1,suma/1,
- dlugosc2/1,dlugosc3/2,dodaj2/2,dodaj3/3,odwrotnosc2/1,odwrotnosc3/2,
- suma2/1,suma3/2,srednia_listy2/1,zmniejsz_o_n/2,zmniejsz_o_n2/2,
- zmniejsz_o_n3/3,potega/2,potega2/3,max/1,max2/2,s_wyb/1,s_wyb2/2,
- a/1,a2/1,a3/1,wstaw/1,pp/1,nowa/1,ostatni/1,pa/1,pa2/2,o/2,oo/2,poczatek/1
- ]).
- %REKURENCYJNIE
- silnia(0) -> 1;
- silnia(N) -> silnia(N-1) * N.
- %ITERACYJNIE
- silnia2(N) -> silnia3(N,1).
- silnia3(0,X) -> X;
- silnia3(N,X) -> silnia3(N-1,X*N).
- %REKURENCYJNIE
- fib(1) -> 1;
- fib(2) -> 1;
- fib(N) -> fib(N-1) + fib(N-2).
- %ITERACYJNIE
- fib2(X) when X>2 -> fib3(X-2,1,1);
- fib2(X) when X<3 -> 1.
- fib3(0,N,L) -> L;
- fib3(X,N,L) -> fib3(X-1,L,N+L).
- %REKURENCYJNIE
- parzysta(X) when X==0 -> true;
- parzysta(X) when X==1 -> false;
- parzysta(X) when X>0 -> parzysta(X-2);
- parzysta(X) when X<0 -> parzysta(X+2).
- %ITERACYJNIE
- parzysta2(X) -> parzysta3(0,X).
- parzysta3(N,X) when N==X -> true;
- parzysta3(N,X) when N==X+1 -> false;
- parzysta3(N,X) when N==X-1 -> false;
- parzysta3(N,X) when X>0 -> parzysta3(N+2,X);
- parzysta3(N,X) when X<0 -> parzysta3(N-2,X).
- %REKURENCYJNIE_Przestawia_zera_na_koniec_listy
- zera([]) -> [];
- zera([H|T]) when H/=0 -> [H|zera(T)];
- zera([H|T]) when H==0 -> zera(T)++[0].
- %ITERACYJNIE
- zera2([H|T]) -> zera3([H|T],[]).
- zera3([],L) -> L;
- zera3([H|T],L) when H/=0 -> zera3(T,[H]++L);
- zera3([H|T],L) when H==0 -> zera3(T,L++[0]).
- %REKURENCYJNIE
- abss([]) -> [];
- abss([H|T]) when H>=0 -> [H|abss(T)];
- abss([H|T]) when H<0 -> [H*(-1)|abss(T)].
- %ITERACYJNIE
- abs2([]) -> [];
- abs2([H|T]) -> abs3([H|T],[]).
- abs3([],L) -> L;
- abs3([H|T],L) when H>0 -> abs3(T,L++[H]);
- abs3([H|T],L) when H=<0 -> H1 = H*(-1), abs3(T,L++[H1]).
- %REKURENCYJNIE
- %ITERACYJNIE
- ostatni2([]) -> [];
- ostatni2([H|T]) -> ostatni3([H|T],0).
- ostatni3([],L) -> L;
- ostatni3([H|T],L) -> ostatni3(T,H).
- %REKURENCYJNIE
- nalezy(E,[]) -> false;
- nalezy(E,[H|T]) when E==H -> true;
- nalezy(E,[H|T]) when E/=H -> nalezy(E,T).
- %ITERACYJNIE
- nalezy2(E,[]) -> false;
- nalezy2(E,[H|T]) -> nalezy3(E,H,T).
- nalezy3(E,X,[]) when E/=X -> false;
- nalezy3(E,X,[]) when E==X -> true;
- nalezy3(E,X,[H|T]) when E==X -> true;
- nalezy3(E,X,[H|T]) when E/=X -> nalezy3(E,H,T).
- %REKURENCYJNIE
- ilosc(E,[]) -> 0;
- ilosc(E,[H|T]) when E==H -> 1 + ilosc(E,T);
- ilosc(E,[H|T]) when E/=H -> ilosc(E,T).
- %ITERACYJNIE
- ilosc2(E,[H|T]) -> ilosc3(E,[H|T],0);
- ilosc2(E,[]) -> 0.
- ilosc3(E,[],N) -> N;
- ilosc3(E,[H|T],N) when H==E -> ilosc3(E,T,N+1);
- ilosc3(E,[H|T],N) when H/=E -> ilosc3(E,T,N).
- %REKURENCYJNIE
- dlugosc([]) -> 0;
- dlugosc([H|T]) -> 1 + dlugosc(T).
- %ITERACYJNIE
- dlugosc2([])->0;
- dlugosc2([H|T]) -> dlugosc3(T,1).
- dlugosc3([],X) -> X;
- dlugosc3([H|T],X) -> X1=X+1, dlugosc3(T,X1).
- %REKURENCYJNIE
- dodaj([],[]) -> [];
- dodaj([],[H|T]) -> [H|T];
- dodaj([H|T],[]) -> [H|T];
- dodaj([H1|T1],[H2|T2]) -> [H1,H2|dodaj(T1,T2)].
- %ITERACYJNIE
- dodaj2([],[])->[];
- dodaj2([H1|T1],[H2|T2]) -> dodaj3(T1,T2,[H1,H2]);
- dodaj2([],[H2|T2]) -> dodaj3([],T2,[H2]);
- dodaj2([H1|T1],[]) -> dodaj3(T1,[],[H1]).
- dodaj3([H1|T1],[H2|T2],L) -> dodaj3(T1,T2,[H1,H2|L]);
- dodaj3([H1|T1],[],L) -> dodaj3(T1,[],[H1|L]);
- dodaj3([],[H2|T2],L) -> dodaj3([],T2,[H2|L]);
- dodaj3([],[],L) -> L.
- %REKURENCYJNIE
- odwrotnosc([]) -> [];
- odwrotnosc([H|T]) -> odwrotnosc(T)++[H].
- %ITERACYJNIE
- odwrotnosc2([]) -> [];
- odwrotnosc2([H|T]) -> odwrotnosc3(T,[H]).
- odwrotnosc3([H|T],L) -> odwrotnosc3(T,[H|L]);
- odwrotnosc3([],L) -> L.
- %REKURENCYJNIE
- suma([]) -> 0;
- suma([H|T]) -> H + suma(T).
- %ITERACYJNIE
- suma2([]) -> 0;
- suma2([H|T]) -> suma3(T,H).
- suma3([H|T],X) -> X1=X+H, suma3(T,X1);
- suma3([],X) -> X.
- %REKURENCYJNIE
- srednia_listy([]) -> 0;
- srednia_listy([H|T]) -> suma([H|T])/dlugosc([H|T]).
- %ITERACYJNIE
- srednia_listy2([]) -> 0;
- srednia_listy2([H|T]) -> suma2([H|T])/dlugosc2([H|T]).
- %REKURENCYJNIE
- zmniejsz_o_n([],_) -> [];
- zmniejsz_o_n([H|T],X) -> [H-X|zmniejsz_o_n(T,X)].
- %ITERACYJNIE
- zmniejsz_o_n2([],_) -> [];
- zmniejsz_o_n2([H|T],X) -> zmniejsz_o_n3(T,X,[H-X]).
- zmniejsz_o_n3([],X,L) -> L;
- zmniejsz_o_n3([H|T],X,L) -> zmniejsz_o_n3(T,X,L++[H-X]).
- %ITERACYJNIE
- potega(X,0) -> 1;
- potega(X,1) -> X;
- potega(X,Y) -> potega2(X,X,Y).
- potega2(X,Y,1) -> X;
- potega2(X,Y,Z) -> potega2(X*Y,Y,Z-1).
- %Sortowanie_przez_wybieranie
- %ITERACYJNIE
- max([]) -> [];
- max([H|T]) -> max2(T,H).
- max2([],X) -> X;
- max2([H|T],X) when H>X -> max2(T,H);
- max2([H|T],X) when X>=H -> max2(T,X).
- s_wyb([]) -> [];
- s_wyb([H|T]) -> s_wyb2([H|T],[]).
- s_wyb2([],L) -> L;
- s_wyb2(X,Y) -> X1=max(X), s_wyb2(X--[X1],Y++[X1]).
- %AKCEPTATOR_JEZYKA_(01)*0010(1)*(0)+101
- a([0,1|T]) -> a(T);
- a([0,0,1,0|T]) -> a2(T);
- a(_) -> false.
- a2([1|T]) -> a2(T);
- a2([0|T]) -> a3(T);
- a2(_) -> false.
- a3([0|T]) -> a3(T);
- a3([1,0,1]) -> true;
- a3(_) -> false.
- %quicksort
- pp([]) -> [];
- pp([H|T]) -> pp([X||X<-T,X>H])++[H]++pp([X||X<-T,H>=X]).
- %zwraca tablice bez ostatniego elementu
- nowa([H]) -> [];
- nowa([H|T]) -> [H|nowa(T)].
- %zwraca ostatnia wartosc tablicy
- ostatni([H]) -> H;
- ostatni([H|T]) -> ostatni(T).
- %sprawdzanie czy jest palindromem
- pa([]) -> true;
- pa([H]) -> true;
- pa([H|T]) -> pa2([H|T],ostatni(T)).
- pa2([H|T],X) when X==H -> pa(nowa(T));
- pa2([H|T],X) when X/=H -> false.
- %usuwanie wszystkich elementow X z tablicy
- o([],X) -> [];
- o([H|T],X) when H==X -> o(T,X);
- o([H|T],X) when H/=X -> [H]++o(T,X).
- %usuwanie z 1 tablicy wszystkich elementow z 2
- oo([],[]) -> [];
- oo([],X) -> [];
- oo(X,[]) -> X;
- oo([H1|T1],[H2|T2]) -> L=o([H1|T1],H2), oo(L,T2).
- %przestawianie zer na poczatek
- poczatek([]) -> [];
- poczatek([H|T]) when H==0 -> [H|poczatek(T)];
- poczatek([H|T]) when H/=0 -> poczatek(T)++[H].
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement