Advertisement
Gregb12

Untitled

Mar 28th, 2017
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 3.16 KB | None | 0 0
  1. %zad 1
  2. appn1(L,X):-
  3.   appn(L,[X]-X).
  4. appn([],_-[]).
  5. appn([[]|T],Acc):-!,
  6.   appn(T,Acc).
  7. appn([[H|H1]|T],L-End):-
  8.   End=[H|End1],
  9.   appn([H1|T],L-End1).
  10.  
  11. %zad 2
  12. flatten(Lista_zlozona,Lista_splaszczona_rev):-
  13.   flatten(Lista_zlozona,[],Lista_splaszczona),
  14.   reverse(Lista_splaszczona,Lista_splaszczona_rev).
  15. flatten([],Acc,Acc):-!.
  16. flatten([H|T],Acc,Lista_splaszczona):-
  17.   atomic(H),
  18.   Acc1=[H|Acc],
  19.   flatten(T,Acc1,Lista_splaszczona),!.
  20. flatten([H|T],Acc,Lista_splaszczona):-
  21.   flatten(H,Acc,Lista_splaszczona2),
  22.   flatten(T,Lista_splaszczona2,Lista_splaszczona).
  23.  
  24. %zad 3
  25. halve(Lista,P,Druga_polowa):-
  26.   halve(Lista,[P]-P,Lista,Druga_polowa).
  27. halve(Acc1,_-[],[],Acc1):-!.
  28. halve(Acc1,_-[],[_],Acc1):-!.
  29. halve(Lista,L-End,Acc1,Druga_polowa):-
  30.   Lista=[H|T],
  31.   Acc1=[_|[_|T1]],
  32.   End=[H|End2],
  33.   halve(T,L-End2,T1,Druga_polowa).
  34.  
  35. %zad 4
  36. merge1(L1,L2,X):-
  37.   merge(L1,L2,[X]-X).
  38. merge([],B,_-B):-!.
  39. merge(A,[],_-A):-!.
  40. merge([H1|T1],[H2|T2],L-End):-
  41.   H1<H2,!,
  42.   End=[H1|End1],
  43.   merge(T1,[H2|T2],L-End1).
  44. merge(L1,[H2|T2],L-End):-
  45.   End=[H2|End1],
  46.   merge(L1,T2,L-End1).
  47.  
  48. merge_sort([],[]):-!.
  49. merge_sort([A],[A]):-!.
  50. merge_sort(Lista,Lista_sort):-
  51.   halve(Lista,L,R),
  52.   merge_sort(L,L_sort),
  53.   merge_sort(R,R_sort),
  54.   merge1(L_sort,R_sort,Lista_sort).
  55.  
  56. %zad 5
  57. dalsze(X,0,X):-!.
  58. dalsze([_|X],N,Y):-
  59.     NN is N-1,
  60.     dalsze(X,NN,Y).
  61.  
  62.  
  63.  
  64. merge_sort_5(_,0,[]):-!.
  65. merge_sort_5([H|_],1,[H]):-!.
  66. merge_sort_5([A],_,[A]).
  67. merge_sort_5(X,N,Y):-
  68.     N1 is N div 2,
  69.     N2 is N-N1,
  70.     merge_sort_5(X,N1,YY),
  71.     dalsze(X,N1,Z),
  72.     merge_sort_5(Z,N2,ZZ),
  73.     merge1(YY,ZZ,Y).
  74.  
  75. %zad 6
  76. merge_sort2(Lista,Lista_sort):-
  77.   na_singletony(Lista,[Lista_poj]-Lista_poj),
  78.   merge_sort_straszna(Lista_poj,[Lista_sort]-Lista_sort).
  79.  
  80. merge_sort_straszna([A],[A]-A):-!.
  81. merge_sort_straszna(Lista_poj,[Lista_sort]-Lista_sort):-
  82.   merge_sort3(Lista_poj,[Lista_sort]-Lista_sort_straszna),
  83.   merge_sort_straszna(Lista_sort_straszna,[Lista_sort]-Lista_sort).
  84.  
  85. na_singletony([],_-[]).
  86. na_singletony([H|T],L-End):-
  87.   End=[[H]|End1],
  88.   na_singletony(T,L-End1).
  89.  
  90. merge_sort3([],_-[]):-!.
  91. merge_sort3([A],_-[A]):-!.
  92. merge_sort3([H1|[H2|T]],L-End):-
  93.   merge1(H1,H2,Wyn),
  94.   End=[Wyn|End1],
  95.   merge_sort3(T,L-End1).
  96.  
  97.   %zad 7
  98. split(List,Med,S,B):-
  99.   split1(List,Med,[S]-S,[B]-B).
  100. split1([],_,_-[],_-[]).
  101. split1([H|T],Med,S-EndS,B-EndB):-
  102.   H<Med,!,
  103.   EndS=[H|EndS1],
  104.   split1(T,Med,S-EndS1,B-EndB).
  105. split1([H|T],Med,S-EndS,B-EndB):-
  106.   EndB=[H|EndB1],
  107.   split1(T,Med,S-EndS,B-EndB1).
  108.  
  109. qsort(List, Sorted):-
  110.   qsort(List, Sorted, []).
  111.  
  112. qsort([], Sorted, Sorted).
  113.  
  114. qsort([H|T], S1, Acc):-
  115.   split(T, H, S, B),
  116.   qsort(B, B1, Acc),
  117.   qsort(S, S1, [H|B1]).
  118.  
  119. %zad 9
  120. sum(X,Y,Z):-
  121.     nonvar(X),
  122.     nonvar(Y),!,
  123.     Z is X + Y.
  124. sum(X,Y,Z):-
  125.     nonvar(Z),
  126.     nonvar(Y),!,
  127.     X is Z - Y.
  128. sum(X,Y,Z):-
  129.     nonvar(Z),
  130.     nonvar(X),!,
  131.     Y is Z - X.
  132. sum(X,Y,Z):-
  133.     nonvar(X),!,
  134.     itr(0,Y),
  135.     Z is Y + X.
  136. sum(X,Y,Z):-
  137.     nonvar(Y),!,
  138.     itr(0,X),
  139.     Z is Y + X.
  140. sum(X,Y,Z):-
  141.     nonvar(Z),!,
  142.     itrm(0,X),
  143.     Y is Z - X.
  144. sum(X,Y,Z):-
  145.     itr(0,Y),
  146.     itr(0,X),
  147.     Z is X + Y.
  148.  
  149. itr(X,X).
  150. itr(X,Y):-
  151.     Z is X + 1,
  152.     itr(Z,Y).
  153.  
  154. itrm(X,X).
  155. itrm(X,Y):-X\=0,Y is -X.
  156. itrm(X,Y):-
  157.     Z is X + 1,
  158.     itrm(Z,Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement