Advertisement
Guest User

Untitled

a guest
Jun 13th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 5.81 KB | None | 0 0
  1. -module(a).
  2. -export([
  3. silnia/1,fib/1,parzysta/1,zera/1,zera2/1,zera3/2,
  4. abss/1,nalezy/2,silnia2/1,silnia3/2,
  5. dlugosc/1,dodaj/2,odwrotnosc/1,ilosc/2,ilosc2/2,ilosc3/3,
  6. fib2/1,fib3/3,parzysta2/1,parzysta3/2,abs2/1,abs3/2,
  7. ostatni2/1,ostatni3/2,nalezy2/2,nalezy3/3,srednia_listy/1,suma/1,
  8. dlugosc2/1,dlugosc3/2,dodaj2/2,dodaj3/3,odwrotnosc2/1,odwrotnosc3/2,
  9. suma2/1,suma3/2,srednia_listy2/1,zmniejsz_o_n/2,zmniejsz_o_n2/2,
  10. zmniejsz_o_n3/3,potega/2,potega2/3,max/1,max2/2,s_wyb/1,s_wyb2/2,
  11. a/1,a2/1,a3/1,wstaw/1,pp/1,nowa/1,ostatni/1,pa/1,pa2/2,o/2,oo/2,poczatek/1
  12. ]).
  13.  
  14. %REKURENCYJNIE
  15. silnia(0) -> 1;
  16. silnia(N) -> silnia(N-1) * N.
  17. %ITERACYJNIE
  18. silnia2(N) -> silnia3(N,1).
  19. silnia3(0,X) -> X;
  20. silnia3(N,X) -> silnia3(N-1,X*N).
  21.  
  22. %REKURENCYJNIE
  23. fib(1) -> 1;
  24. fib(2) -> 1;
  25. fib(N) -> fib(N-1) + fib(N-2).
  26. %ITERACYJNIE
  27. fib2(X) when X>2 -> fib3(X-2,1,1);
  28. fib2(X) when X<3 -> 1.
  29. fib3(0,N,L) -> L;
  30. fib3(X,N,L) -> fib3(X-1,L,N+L).
  31.  
  32. %REKURENCYJNIE
  33. parzysta(X) when X==0 -> true;
  34. parzysta(X) when X==1 -> false;
  35. parzysta(X) when X>0 -> parzysta(X-2);
  36. parzysta(X) when X<0 -> parzysta(X+2).
  37. %ITERACYJNIE
  38. parzysta2(X) -> parzysta3(0,X).
  39. parzysta3(N,X) when N==X -> true;
  40. parzysta3(N,X) when N==X+1 -> false;
  41. parzysta3(N,X) when N==X-1 -> false;
  42. parzysta3(N,X) when X>0 -> parzysta3(N+2,X);
  43. parzysta3(N,X) when X<0 -> parzysta3(N-2,X).
  44.  
  45. %REKURENCYJNIE_Przestawia_zera_na_koniec_listy
  46. zera([]) -> [];
  47. zera([H|T]) when H/=0 -> [H|zera(T)];
  48. zera([H|T]) when H==0 -> zera(T)++[0].
  49. %ITERACYJNIE
  50. zera2([H|T]) -> zera3([H|T],[]).
  51. zera3([],L) -> L;
  52. zera3([H|T],L) when H/=0 -> zera3(T,[H]++L);
  53. zera3([H|T],L) when H==0 -> zera3(T,L++[0]).
  54.  
  55. %REKURENCYJNIE
  56. abss([]) -> [];
  57. abss([H|T]) when H>=0 -> [H|abss(T)];
  58. abss([H|T]) when H<0 -> [H*(-1)|abss(T)].
  59. %ITERACYJNIE
  60. abs2([]) -> [];
  61. abs2([H|T]) -> abs3([H|T],[]).
  62. abs3([],L) -> L;
  63. abs3([H|T],L) when H>0 -> abs3(T,L++[H]);
  64. abs3([H|T],L) when H=<0 -> H1 = H*(-1), abs3(T,L++[H1]).
  65.  
  66. %REKURENCYJNIE
  67. %ITERACYJNIE
  68. ostatni2([]) -> [];
  69. ostatni2([H|T]) -> ostatni3([H|T],0).
  70. ostatni3([],L) -> L;
  71. ostatni3([H|T],L) -> ostatni3(T,H).
  72.  
  73. %REKURENCYJNIE
  74. nalezy(E,[]) -> false;
  75. nalezy(E,[H|T]) when E==H -> true;
  76. nalezy(E,[H|T]) when E/=H -> nalezy(E,T).
  77. %ITERACYJNIE
  78. nalezy2(E,[]) -> false;
  79. nalezy2(E,[H|T]) -> nalezy3(E,H,T).
  80. nalezy3(E,X,[]) when E/=X -> false;
  81. nalezy3(E,X,[]) when E==X -> true;
  82. nalezy3(E,X,[H|T]) when E==X -> true;
  83. nalezy3(E,X,[H|T]) when E/=X -> nalezy3(E,H,T).
  84.  
  85. %REKURENCYJNIE
  86. ilosc(E,[]) -> 0;
  87. ilosc(E,[H|T]) when E==H -> 1 + ilosc(E,T);
  88. ilosc(E,[H|T]) when E/=H -> ilosc(E,T).
  89. %ITERACYJNIE
  90. ilosc2(E,[H|T]) -> ilosc3(E,[H|T],0);
  91. ilosc2(E,[]) -> 0.
  92. ilosc3(E,[],N) -> N;
  93. ilosc3(E,[H|T],N) when H==E -> ilosc3(E,T,N+1);
  94. ilosc3(E,[H|T],N) when H/=E -> ilosc3(E,T,N).
  95.  
  96. %REKURENCYJNIE
  97. dlugosc([]) -> 0;
  98. dlugosc([H|T]) -> 1 + dlugosc(T).
  99. %ITERACYJNIE
  100. dlugosc2([])->0;
  101. dlugosc2([H|T]) -> dlugosc3(T,1).
  102. dlugosc3([],X) -> X;
  103. dlugosc3([H|T],X) -> X1=X+1, dlugosc3(T,X1).
  104.  
  105. %REKURENCYJNIE
  106. dodaj([],[]) -> [];
  107. dodaj([],[H|T]) -> [H|T];
  108. dodaj([H|T],[]) -> [H|T];
  109. dodaj([H1|T1],[H2|T2]) -> [H1,H2|dodaj(T1,T2)].
  110. %ITERACYJNIE
  111. dodaj2([],[])->[];
  112. dodaj2([H1|T1],[H2|T2]) -> dodaj3(T1,T2,[H1,H2]);
  113. dodaj2([],[H2|T2]) -> dodaj3([],T2,[H2]);
  114. dodaj2([H1|T1],[]) -> dodaj3(T1,[],[H1]).
  115. dodaj3([H1|T1],[H2|T2],L) -> dodaj3(T1,T2,[H1,H2|L]);
  116. dodaj3([H1|T1],[],L) -> dodaj3(T1,[],[H1|L]);
  117. dodaj3([],[H2|T2],L) -> dodaj3([],T2,[H2|L]);
  118. dodaj3([],[],L) -> L.
  119.  
  120. %REKURENCYJNIE
  121. odwrotnosc([]) -> [];
  122. odwrotnosc([H|T]) -> odwrotnosc(T)++[H].
  123. %ITERACYJNIE
  124. odwrotnosc2([]) -> [];
  125. odwrotnosc2([H|T]) -> odwrotnosc3(T,[H]).
  126. odwrotnosc3([H|T],L) -> odwrotnosc3(T,[H|L]);
  127. odwrotnosc3([],L) -> L.
  128.  
  129. %REKURENCYJNIE
  130. suma([]) -> 0;
  131. suma([H|T]) -> H + suma(T).
  132. %ITERACYJNIE
  133. suma2([]) -> 0;
  134. suma2([H|T]) -> suma3(T,H).
  135. suma3([H|T],X) -> X1=X+H, suma3(T,X1);
  136. suma3([],X) -> X.
  137.  
  138. %REKURENCYJNIE
  139. srednia_listy([]) -> 0;
  140. srednia_listy([H|T]) -> suma([H|T])/dlugosc([H|T]).
  141. %ITERACYJNIE
  142. srednia_listy2([]) -> 0;
  143. srednia_listy2([H|T]) -> suma2([H|T])/dlugosc2([H|T]).
  144.  
  145. %REKURENCYJNIE
  146. zmniejsz_o_n([],_) -> [];
  147. zmniejsz_o_n([H|T],X) -> [H-X|zmniejsz_o_n(T,X)].
  148. %ITERACYJNIE
  149. zmniejsz_o_n2([],_) -> [];
  150. zmniejsz_o_n2([H|T],X) -> zmniejsz_o_n3(T,X,[H-X]).
  151. zmniejsz_o_n3([],X,L) -> L;
  152. zmniejsz_o_n3([H|T],X,L) -> zmniejsz_o_n3(T,X,L++[H-X]).
  153.  
  154. %ITERACYJNIE
  155. potega(X,0) -> 1;
  156. potega(X,1) -> X;
  157. potega(X,Y) -> potega2(X,X,Y).
  158. potega2(X,Y,1) -> X;
  159. potega2(X,Y,Z) -> potega2(X*Y,Y,Z-1).
  160.  
  161. %Sortowanie_przez_wybieranie
  162. %ITERACYJNIE
  163. max([]) -> [];
  164. max([H|T]) -> max2(T,H).
  165. max2([],X) -> X;
  166. max2([H|T],X) when H>X -> max2(T,H);
  167. max2([H|T],X) when X>=H -> max2(T,X).
  168.  
  169. s_wyb([]) -> [];
  170. s_wyb([H|T]) -> s_wyb2([H|T],[]).
  171. s_wyb2([],L) -> L;
  172. s_wyb2(X,Y) -> X1=max(X), s_wyb2(X--[X1],Y++[X1]).
  173.  
  174. %AKCEPTATOR_JEZYKA_(01)*0010(1)*(0)+101
  175. a([0,1|T]) -> a(T);
  176. a([0,0,1,0|T]) -> a2(T);
  177. a(_) -> false.
  178. a2([1|T]) -> a2(T);
  179. a2([0|T]) -> a3(T);
  180. a2(_) -> false.
  181. a3([0|T]) -> a3(T);
  182. a3([1,0,1]) -> true;
  183. a3(_) -> false.
  184.  
  185. %quicksort
  186. pp([]) -> [];
  187. pp([H|T]) -> pp([X||X<-T,X>H])++[H]++pp([X||X<-T,H>=X]).
  188.  
  189. %zwraca tablice bez ostatniego elementu
  190. nowa([H]) -> [];
  191. nowa([H|T]) -> [H|nowa(T)].
  192.  
  193. %zwraca ostatnia wartosc tablicy
  194. ostatni([H]) -> H;
  195. ostatni([H|T]) -> ostatni(T).
  196.  
  197. %sprawdzanie czy jest palindromem
  198. pa([]) -> true;
  199. pa([H]) -> true;
  200. pa([H|T]) -> pa2([H|T],ostatni(T)).
  201. pa2([H|T],X) when X==H -> pa(nowa(T));
  202. pa2([H|T],X) when X/=H -> false.
  203.  
  204. %usuwanie wszystkich elementow X z tablicy
  205. o([],X) -> [];
  206. o([H|T],X) when H==X -> o(T,X);
  207. o([H|T],X) when H/=X -> [H]++o(T,X).
  208.  
  209. %usuwanie z 1 tablicy wszystkich elementow z 2
  210. oo([],[]) -> [];
  211. oo([],X) -> [];
  212. oo(X,[]) -> X;
  213. oo([H1|T1],[H2|T2]) -> L=o([H1|T1],H2), oo(L,T2).
  214.  
  215. %przestawianie zer na poczatek
  216. poczatek([]) -> [];
  217. poczatek([H|T]) when H==0 -> [H|poczatek(T)];
  218. poczatek([H|T]) when H/=0 -> poczatek(T)++[H].
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement