Advertisement
Guest User

prolog.pl

a guest
Sep 27th, 2019
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 3.78 KB | None | 0 0
  1. trojkat(X,Y,Z) :- X+Y > Z, X+Z > Y, Y+Z>X.
  2.  
  3.  
  4. member2(H,[H|_]) :- !.
  5. member2(R,[_|T]) :- member2(R,T).
  6.  
  7. append2([],L,L).
  8. append2([H|T],L,[H|R]) :- append2(T,L,R).
  9.  
  10. all_diff2([]) :- !.
  11. all_diff2([H|T]) :- \+ member2(H,T),all_diff2(T).
  12.  
  13. %ostatni(Lista,Element) ==> [a,b,c,d,e], Element -> Element = e
  14.  
  15. ostatni([H],H) :- !.
  16. ostatni([_|T],E) :- ostatni(T,E).
  17.  
  18.  
  19.  
  20. % laczenie list conc(Lista1,Lista2,Lista1+2)
  21.  
  22. conc([],L,L).
  23. conc([H|T1], L2, [H|T2]) :- conc(T1,L2,T2).
  24.  
  25.  
  26.  
  27. % usun ostatni element, bezostatniego([a,b,c,d,e],Wynik),Wynik =[a,b,c,d]
  28.  
  29.  
  30. bezostatniego(Lista,Wynik) :- bezostatniego(Lista,Wynik,[]), !.
  31. bezostatniego([_],W,W).
  32. bezostatniego([H|T],W,A) :- conc(A,[H],A1), bezostatniego(T,W,A1).
  33.  
  34.  
  35. %suma elementow liczby
  36. %suma([1,3,5,8],Wynik).
  37. %wynik = 17
  38. %
  39. suma(Lista,Wynik) :- suma(Lista,Wynik,0),!.
  40. suma([],Wynik,Wynik).
  41. suma([H|T],Wynik,A) :- A1 is A+H, suma(T,Wynik,A1).
  42.  
  43. %odwracanie([a,b,c,1,2],Wynik).
  44. %Wynik = [2,1,c,b,a].
  45.  
  46. odwracanie(Lista,Wynik) :- odwracanie(Lista,Wynik,[]), !.
  47.  
  48. odwracanie([],Wynik, Wynik).
  49. odwracanie([H|T],Wynik,A) :- odwracanie(T,Wynik,[H|A]).
  50.  
  51. %usuwanie parzystych ([1,2,4,5,7],Wynik).
  52. %Wynik = [1,5,7]
  53. %
  54.  
  55. usuwanie_parzystych(Lista,Wynik) :- usuwanie_parzystych(Lista,Wynik,[]),!.
  56. usuwanie_parzystych([],Wynik,Wynik).
  57. usuwanie_parzystych([H|T],Wynik,A) :- H mod 2 =:= 0, usuwanie_parzystych(T,Wynik,A).
  58. usuwanie_parzystych([H|T], Wynik,A) :- H mod 2 =\= 0, conc(A,[H],A1),
  59.     usuwanie_parzystych(T,Wynik,A1).
  60.  
  61.  
  62.  
  63. maximum([H],H) :- !.
  64. maximum([H|T],Wynik) :- maximum([H|T], Wynik, H), !.
  65. maximum([],Wynik, Wynik).
  66. maximum([H|T],Wynik,Max) :- H > Max,!, maximum(T,Wynik,H).
  67. maximum([_|T],Wynik,Max) :- maximum(T,Wynik,Max).
  68.  
  69. %gorki([/,/,/,\,\,/,/,/,/,\,\,\,\,\], Max, Min)
  70. % / - poziom wyzej
  71. % \ - poziom nizej
  72. %
  73. % gorki(Lista,Max,Min,Pozycja,AktualnyMax,AktualnyMin)
  74. %
  75. %
  76. gorki(Lista,Max,Min) :- gorki(Lista, Max,Min,0,0,0),!.
  77. gorki([],Max,Min,_,Max,Min).
  78.  
  79. gorki([/|T],Max,Min,P,AMax,AMin) :- P1 is P+1, P1>AMax,!,gorki(T,Max,Min,P1,P1,AMin).
  80. gorki([/|T],Max,Min,P,AMax,AMin) :- P1 is P+1,!,gorki(T,Max,Min,P1,AMax,AMin).
  81. gorki([\|T],Max,Min,P,AMax,AMin) :- P1 is P-1, P1<AMin,!,gorki(T,Max,Min,P1,AMax,P1).
  82. gorki([\|T],Max,Min,P,AMax,AMin) :- P1 is P-1,!,gorki(T,Max,Min,P1,AMax,AMin).
  83.  
  84.  
  85.  
  86.  
  87. %wejscie
  88. %Lista [a,b,c,d,e,f,g]
  89. %Zbior [c,e,g]
  90. %Wynik [a,b,d,f]
  91.  
  92.  
  93. usuwanie_elementow_zbioru(Lista,Zbior,Wynik) :- usuwanie_elementow_zbioru(Lista,Zbior,Wynik,[]).
  94. usuwanie_elementow_zbioru([],_,W,W).
  95.  
  96. usuwanie_elementow_zbioru([H|T], Z, W, A) :- member2(Z,H), usuwanie_elementow_zbioru(T,Z,W,A), !.
  97.  
  98. usuwanie_elementow_zbioru([H|T], Z, W, A) :- conc(A,[H],A1), usuwanie_elementow_zbioru(T,Z,W,A1).
  99.  
  100.  
  101.  
  102. %dzielniki(100, Dzielniki).
  103. %%     Dzielniki = [1,2,5,10,20,50,100]
  104. %
  105. %
  106.  
  107.  
  108. dzielniki(Liczba,Dzielniki) :- Liczba > 0, dzielniki(Liczba,Dzielniki1,[],1),conc(Dzielniki1,[Liczba],Dzielniki).
  109. dzielniki(Liczba,Dzielniki,Dzielniki,Liczba).
  110. dzielniki(Liczba,Dzielniki,A,L):- Liczba mod L =:= 0, L1 is L + 1, conc(A,[L],A1),
  111. dzielniki(Liczba,Dzielniki,A1,L1).
  112. dzielniki(Liczba,Dzielniki,A,L):- Liczba mod L =\= 0, L1 is L + 1, dzielniki(Liczba,Dzielniki,A,L1).
  113.  
  114. member3([H|_],H) :- !.
  115. member3([_|T],E) :- member3(T,E).
  116.  
  117. append3([],L,L) :- !.
  118. append3([H|T],L,[H|R]) :- append3(T,L,R).
  119.  
  120. rev(L,R) :- rev(L,R,[]).
  121. rev([],R,R).
  122.  
  123. rev([H|T],R,M) :- rev(T,R,[H|M]).
  124.  
  125.  
  126. last([H],H) :- !.
  127.  
  128. last([_|T],E) :- last(T,E).
  129.  
  130.  
  131. occurrences(_,[],0).
  132. occurrences(X,[X|L],N) :- occurrences(X,L,M), N is M+1, !.
  133. occurrences(X,[Y|L],N) :- not(X=Y), occurrences(X,L,N).
  134.  
  135.  
  136. length2([],0).
  137. length2([_|L],N) :- length(L,M), N is M+1.
  138.  
  139.  
  140. count_list([], []).
  141. count_list([H|T], R) :-
  142.     count_list(T, C),
  143.     update(H, C, R).
  144.  
  145. update(H, [], [[H,1]]).
  146. update(H, [[H,N]|T], [[H,M]|T]) :- !, M is N+1.
  147. update(H, [S|T], [S|U]) :- update(H, T, U).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement