Advertisement
Gregb12

Untitled

Mar 20th, 2017
445
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.41 KB | None | 0 0
  1. %zadanie 1
  2. length([], Acc, Acc).
  3.  
  4. length([_|X], Acc, Length) :-
  5.   var(Length),
  6.   NewAcc is Acc + 1, !,
  7.   length(X, NewAcc, Length).
  8.  
  9. length([_|X], Acc, Length) :-
  10.   Acc =< Length,
  11.   NewAcc is Acc + 1,
  12.  
  13.   length(X, NewAcc, Length).
  14.  
  15. /*
  16.   length([], Acc, Acc, 0).
  17.   length([_|X], Acc, Length, Rev):-
  18.     NewRev is Rev-1,
  19.     NewAcc is Acc+1,
  20.     length(X, NewAcc, Length, NewRev).
  21.   */
  22. /*
  23. connection(gliwice, wroclaw).
  24. connection(wroclaw, warszawa).
  25. connection(wroclaw, katowice).
  26. connection(katowice, warszawa).
  27. */
  28. connection(warszawa, krakow).
  29. connection(krakow, warszawa).
  30. connection(krakow, gliwice).
  31. connection(gliwice, krakow).
  32. connection(gliwice, warszawa).
  33. connection(warszawa, gliwice).
  34.  
  35.  
  36.  
  37. /*
  38. trip(X, X, Acc, Acc).
  39. trip(Start, Stop, Trasa, Acc) :-
  40.   relacja(Przystanek, Stop),
  41.   \+ member(Przystanek, Acc),
  42.   trip(Poczatek, Przystanek, Trasa, [Przystanek|Acc]).
  43. */
  44.  
  45. trip(Start, Start,ListaAkum, ListaAkum).
  46.  
  47. trip(Start, Stop, TrasaLista, ListaAkum) :-
  48.   connection(Przystanek, Stop),
  49.   \+ member(Przystanek, ListaAkum),
  50.   trip(Start, Przystanek, TrasaLista, [Przystanek|ListaAkum]).
  51.  
  52. trip(Start, Stop, TrasaLista) :-
  53.   trip(Start, Stop, TrasaLista, [Stop]).
  54.  
  55.  
  56.  
  57. %zadanie 4
  58. mirror(leaf, leaf).
  59. mirror(node(Left, Val, Right), MirrorTree) :-
  60.   mirror(Left, MirrorLeft),
  61.   mirror(Right, MirrorRight),
  62.   MirrorTree = node(MirrorRight, Val, MirrorLeft).
  63.  
  64. flattn(leaf, []).
  65. flattn(node(L, V, R), Infixed) :-
  66.   flattn(R, PrevInfixed),
  67.   SecondInfixed = [V|PrevInfixed],
  68.   flattn(L, AnotherPrevInfixed),
  69.   append(AnotherPrevInfixed, SecondInfixed, Infixed).
  70.  
  71. %zadanie 5
  72. insert(leaf, Elem, node(leaf, Elem, leaf)).
  73.  
  74. insert(node(L, V, R), Elem, InsertedTree) :-
  75.   Elem>=V,
  76.   insert(R, Elem, InsertedSubTree),
  77.   InsertedTree = node(L, V, InsertedSubTree),!.
  78.  
  79. insert(node(L, V, R), Elem, InsertedTree) :-
  80.   insert(L, Elem, InsertedSubTree),
  81.   InsertedTree = node(InsertedSubTree, V, R).
  82.  
  83. insertList(Tree, [], Tree).
  84. insertList(Tree, [H|Tail], InsertedTree) :-
  85.   insert(Tree, H, PInsertedList),
  86.   insertList(PInsertedList, Tail, InsertedTree).
  87. treeSort(Tree, List, SortedList) :-
  88.   insertList(Tree, List, NewTree),
  89.   flattn(NewTree, SortedList).
  90.  
  91.  
  92.   %zadanie 7
  93.  
  94.  
  95.   reverse(X,Y) :-
  96.     reverse(X,[],Y).
  97.  
  98.   reverse([],A,A).
  99.  
  100.   reverse([H|T],A,Y) :-
  101.     atomic(H),
  102.     reverse(T,[H|A],Y), !.
  103.  
  104.   reverse([H|T], A, Y) :-
  105.     reverse(H, [], NY),
  106.     reverse(T, [NY|A], Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement