Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1.  
  2. pierwszyZlisty([X|_],X).
  3. drugiZlisty([_,Y|_],Y).
  4.  
  5. ostatniZlisty([X],X).
  6. ostatniZlisty([_|T],X) :- ostatniZlisty(T,X).
  7.  
  8. przedostatniZlisty([X,_],X).
  9. przedostatniZlisty([_|T],X) :- przedostatniZlisty(T,X).
  10.  
  11. czyLista([_|_]).
  12. czyLista([]).
  13.  
  14. liczSuma([],0).
  15. liczSuma([H|T],W) :- liczSuma(T, W1), W is H + W1.
  16.  
  17.  
  18. liczIloczyn([],1).
  19. liczIloczyn([H|T],W) :- liczIloczyn(T, W1), W is H * W1.
  20.  
  21. nwd(X,0,X).
  22. nwd(X,Y,Nwd) :- Y > 0, R is X mod Y, nwd(Y,R,Nwd).
  23.  
  24. nww(A,B,X) :- nwd(A,B,Y), X is A*B // Y.
  25.  
  26.  
  27.  
  28. zapis(X) :-
  29. open('C:\\Users\\Student\\Desktop\\test.txt',write,Stream),
  30. write(Stream,X), nl(Stream),
  31. close(Stream).
  32.  
  33. odczyt(X):-
  34. X = 'C:\\Users\\20631\\Documents\\Prolog\\data.txt',
  35. see(X),
  36. repeat,
  37. get_char(T),print(T),T=end_of_file,!,seen.
  38.  
  39.  
  40.  
  41. powtorzNRazy(0,_) :- !.
  42. powtorzNRazy(N,Text) :- N1 is N-1, powtorzNRazy(N1,Text),printm(N,Text).
  43.  
  44. printm(N,Text) :- write(N), write('. '), write(Text), nl.
  45.  
  46. dodaj(X,Y) :-
  47. read(X),
  48. read(Y),
  49. write(X),
  50. write('+'),
  51. write(Y),
  52. write('='),
  53. Z is X + Y,
  54. write(Z).
  55.  
  56. odejmij(X,Y) :-
  57. read(X),
  58. read(Y),
  59. write(X),
  60. write('-'),
  61. write(Y),
  62. write('='),
  63. Z is X - Y,
  64. write(Z).
  65.  
  66. pomnoz(X,Y) :-
  67. read(X),
  68. read(Y),
  69. write(X),
  70. write('*'),
  71. write(Y),
  72. write('='),
  73. Z is X * Y,
  74. write(Z).
  75.  
  76. podziel(X,Y) :-
  77. read(X),
  78. read(Y),
  79. write(X),
  80. write('/'),
  81. write(Y),
  82. write('='),
  83. Z is X / Y,
  84. write(Z).
  85.  
  86. %%%%%%%%%%%%%%%%%%%%% Maksimum%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  87. maksimum2(A,B,W) :- A >= B, W is A, !.
  88. maksimum2(A,B,W) :- A < B, W is B, !.
  89.  
  90. maksimum3(A,B,C,W) :- A >= B, A >= C, W is A, !.
  91. maksimum3(A,B,C,W) :- B >= A, B >= C, W is B, !.
  92. maksimum3(A,B,C,W) :- C >= A, C >= B, W is C, !.
  93.  
  94. %%%%%%%%%%%%%%%%%Czy dodatnia,% ujemna, parzysta, nieparzysta%%%%%
  95. czyDodatnia(X) :- X>0.
  96. czyUjemna(X) :- X<0.
  97. czyParzysta(X) :- X mod 2 =:= 0.
  98. czyNieparzysta(X) :- 1 =:= X mod 2.
  99.  
  100.  
  101.  
  102. %! %%%%%%%%%%%Funckaj sprawdzająca czy argument jest na liście%%%%%%%%
  103. czyNalezyDoListy(X,[X|_]).
  104. czyNalezyDoListy(X,[_|Y]):-czyNalezyDoListy(X,Y).
  105.  
  106.  
  107. %! %%%%%%%%%%%%%%Długość listy %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  108. ileWLiscie(X,[_]):-X is 1.
  109. ileWLiscie(X,[_|Z]):-ileWLiscie(X1,Z),X is X1+1.
  110.  
  111.  
  112. %! %%%%%%%%%%%%%%%%%%%%Łączenie list%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  113. sklejListy([],X,X).
  114. sklejListy([X|L1],L2,[X|L3]) :-
  115. sklejListy(L1,L2,L3).
  116.  
  117.  
  118. %! %%%%%%%%%%%%%%%%%%%%Odwracanie list%%%%%%%%%%%%%%%%%%%%%%%%%%%
  119. odwrocListe([],[]).
  120. odwrocListe([Head|Tail],L) :-
  121. odwrocListe(Tail,R),
  122. sklejListy(R,[Head],L).
  123.  
  124.  
  125. %! %%%%%%%%%%%%%%%%%%%Dodaj na początek listy%%%%%%%%%%%%%%%%%%%%%
  126. dodajNaPoczatekListy(X,Y,W) :-
  127. append(X,Y,W).
  128.  
  129.  
  130.  
  131. %! %%%%%%%%%%%%%%%%%%%Dodaj na koniec listy %%%%%%%%%%%%%%%%%%%%%
  132. dodajNaKoniecListy(X,Y,W) :-
  133. append(Y,X,W).
  134.  
  135.  
  136.  
  137. %! %%%%%%%%%%%%%%%%%%Usuń z listy %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  138. %najpierw lista, potem co usuwamy, potem parametr wyniku
  139. delete(A, [A|B], B).
  140. delete(A, [B, C|D], [B|E]) :- delete(A, [C|D], E).
  141.  
  142. delete2(A, [A|B], B).
  143. delete2(A, [B|D], [B|E]) :- delete2(A, D, E).
  144.  
  145.  
  146. %! %%%%%%%%%%%%%%%%%%Permutacja elementow z listy%%%%%%%%%%%%%%%%%%%%%
  147. usunZListy(X, [X|T], T).
  148. usunZListy(X, [H|T], [H|Z]) :- usunZListy(X, T, Z).
  149.  
  150. permutuj([],[]).
  151. permutuj([H|T],R) :- permutuj(T,X), usunZListy(H,R,X).
  152.  
  153.  
  154.  
  155. % ! %%%%%%%%%%%%%%%%%Wypisywanie tekstu X razy na ekranie%%%%%%%%%%%%%%%%
  156. powtorz(X,Y) :- Y > 0 -> write(X), nl, powtorz(X,Y-1).
  157.  
  158.  
  159. %%%%%%%%%%%%%%%%%%%%%%Funkcja signum %%%%%%%%%%%%%%%%%%%%%%%%%%
  160. signum(X,Y) :- X < 0, Y is -1, !.
  161. signum(X,Y) :- X = 0, Y is 0, !.
  162. signum(X,Y) :- X > 0, Y is 1, !.
  163.  
  164. %%%%%%%%%%%%%%%%%%Silnia%%%%%%%%%%%%%%%%%%%%%%%%%%%
  165. silnia(N,_) :- N<0, !, write('n<0').
  166. silnia(0,1) :- !.
  167. silnia(N,W) :- N > 0, N1 is N-1, silnia(N1,W1),W is N * W1.
  168.  
  169.  
  170. %%%%%%%%%%%%%% Suma elementów listy %%%%%%%%%%%%%%%%%%%%%%%%
  171. sumElements([E], Y) :- (E>0 -> Y is E ; Y is 0).
  172. sumElements([E|R], W) :- E > 0, sumElements(R,W1), W is E+W1.
  173. sumElements([E|R], W) :- E =< 0, sumElements(R,W1), W is W1.
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180. qSort([],[]).
  181. qSort([X|Tail], Sorted) :-
  182. split(X, Tail, Small, Big),!,
  183. qSort(Small, SortedSmall),
  184. qSort(Big, SortedBig),
  185. lacz(SortedSmall, [X|SortedBig], Sorted).
  186. split(_,[],[],[]).
  187. split(H,[X|T],[X|L],G) :- X=<H,split(H,T,L,G).
  188. split(H,[X|T],L,[X|G]) :- X>H,split(H,T,L,G).
  189. lacz([], L, L).
  190. lacz([X|L1], L2, [X|L3]) :- lacz(L1, L2, L3).
  191.  
  192.  
  193.  
  194.  
  195. %%%%%%%%%%%%%%%%%Czy dodatnia,% ujemna, parzysta, nieparzysta%%%%%
  196. czyDodatnia(X) :- X>0.
  197. czyUjemna(X) :- X<0.
  198. czyParzysta(X) :- X mod 2 =:= 0.
  199. czyNieparzysta(X) :- 1 =:= X mod 2.
  200.  
  201.  
  202.  
  203.  
  204.  
  205. %%%%%%%%%%%%%% Ciąg fibbonaciego %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  206. fib(0,1).
  207. fib(1,1).
  208. fib(N,W) :- N >= 2, N2 is N-2 ,N1 is N-1, fib(N2,W1), fib(N1,W2) ,W is W1+W2.
  209.  
  210.  
  211.  
  212.  
  213. czytaj(end_of_file) :- !.
  214. czytaj :- read(T), wykonaj(T).
  215. wykonaj(end_of_file) :- !.
  216. wykonaj(T) :- write(T),nl,czytaj.
  217. czytajPlik(P) :- open(P,read,X), current_input(W), set_input(X), czytaj, close(X), set_input(W).
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224. %%%nazwa, położenie(X,Y), powierzchnia i ludność
  225. city(ogromniaste, 4, 6, 4, 5).
  226. city(malostka, -3, -4, 1, 2).
  227. city(rozne, 10, 10, 4, 3).
  228. city(graniczne, -5, 10, 4, 1).
  229. city(srodkowe, 2, 1, 4, 3).
  230. city(duzaste, -7, 7, 5, 5).
  231. city(wietrzne, -10, -8, 4, 5).
  232. city(sredniaste, 3, 5, 2, 1).
  233. city(dobre, 0, 1, 4, 2).
  234. city(centralne, 0, 0, 2, 0).
  235.  
  236. %%%%%%%%%%%%%%%%%%%% Gęstość%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  237. gestosc(X,Z) :- city(X,_,_,C1P,C1L), Z is C1L / C1P.
  238.  
  239. %%%%%%%%%%%%%%%%%%% Odległość%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  240.  
  241. taxi(X,Y,Z) :- city(X,C1X,C1Y,_,_), city(Y,C2X,C2Y,_,_), Z is abs(C1X - C2X) + abs(C1Y - C2Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement