Advertisement
Gregb12

Untitled

Apr 4th, 2017
418
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.16 KB | None | 0 0
  1.  
  2. %zadanie 1
  3.  
  4. %stos
  5.  
  6. put(E, S, [E|S]).
  7. get([H|T], H, T).
  8. empty([]).
  9.  
  10. addall(Element, Goal, Stack, Rest):-
  11.   findall(Element, Goal, List),
  12.   putall(List, Stack, Rest).
  13.  
  14. putall([],Rest,Rest).
  15. putall([Head|Tail],Stack,Rest):-
  16.   put(Head,Stack,NewStack),
  17.   putall(Tail,NewStack,Rest).
  18.  
  19.  
  20. %kolejka
  21.  
  22. putk(E, S-Wsk, S-Wsk1) :-
  23.   Wsk = [E|Wsk1].
  24. getk([H|T]-Wsk, H, T-Wsk) :-
  25.   nonvar(H).
  26. emptyk(X - X).
  27.  
  28. addall(Element, Goal, Stack, Rest):-
  29.   findall(Element, Goal, List),
  30.   putall(List, Stack, Rest).
  31.  
  32. putall([],Rest,Rest).
  33. putall([Head|Tail],Stack,Rest):-
  34.   put(Head,Stack,NewStack),
  35.   putall(Tail,NewStack,Rest).
  36.  
  37.  
  38.  
  39.   %zadanie 3
  40.   insert(leaf, Elem, node(leaf, Elem, leaf)).
  41.  
  42.   insert(node(L, V, R), Elem, node(L, V, R)) :-
  43.     Elem=V,!.
  44.  
  45.   insert(node(L, V, R), Elem, InsertedTree) :-
  46.     Elem>V,!,
  47.     insert(R, Elem, InsertedSubTree),
  48.     InsertedTree = node(L, V, InsertedSubTree).
  49.  
  50.   insert(node(L, V, R), Elem, InsertedTree) :-
  51.     insert(L, Elem, InsertedSubTree),
  52.     InsertedTree = node(InsertedSubTree, V, R).
  53.  
  54.     find(node(_, Val, _), Elem) :-
  55.       Elem = Val.
  56.     find(node(Left, _, _), Elem) :-
  57.       find(Left, Elem).
  58.     find(node(_, _, Right), Elem) :-
  59.       find(Right, Elem).
  60.  
  61.     findMax(node(_, V, leaf), V) :-!.
  62.     findMax(node(_, _, Right), Max) :-
  63.       find(Right, Max).
  64.  
  65.     delMax(node(L, Val, leaf), Val, L).
  66.     delMax(node(Left, Value, node(L, Val, leaf)), Val, node(Left, Value, L)).
  67.     delMax(node(Left, Val, R), Val, FTree) :-
  68.       delMax(R, Val, PFTree),
  69.       FTree = node(Left, Val, PFTree).
  70.  
  71.  
  72.       del(leaf,_,leaf):-!.
  73.       del(node(Left,Val,Right),V2Del,Wynik):-
  74.         V2Del>Val,!,
  75.         del(Right,V2Del,PrawyWynik),
  76.         Wynik = node(Left,Val,PrawyWynik).
  77.  
  78.       del(node(Left,Val,Right),V2Del,Wynik):-
  79.         V2Del<Val,!,
  80.         del(Left,V2Del,LewyWynik),
  81.         Wynik = node(LewyWynik,Val,Right).
  82.  
  83.       del(node(Left,Val,Right),Val,Wynik):-
  84.         insertTree(Right,Left,Wynik).
  85.  
  86.       insertTree(leaf,X,X):-!.
  87.       insertTree(node(leaf,Val,Wynik),X,node(X,Val,Wynik)):-!.
  88.       insertTree(node(Left,V,Right),X,node(InsertedLeft,V,Right)):-
  89.         insertTree(Left,X,InsertedLeft).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement