Advertisement
Guest User

prologcheatshit

a guest
Apr 10th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.11 KB | None | 0 0
  1. present(Key,tree(Key,_,_)).
  2. present(Key,tree(_,LeftSubTree,_)) :-
  3. present(Key,LeftSubTree).
  4. present(Key,tree(_,_,RightSubTree)) :-
  5. present(Key,RightSubTree).
  6.  
  7.  
  8. inserting(Key,null,tree(Key,null,null)).
  9. inserting(Key,tree(Root,LeftSubTree,RightSubTree),tree(Root,NewLeftSubTree,RightSubTree)) :-
  10.     Key<Root,
  11.     inserting(Key,LeftSubTree,NewLeftSubTree).
  12. inserting(Key,tree(Root,LeftSubTree,RightSubTree),tree(Root,LeftSubTree,NewRightSubTree)) :-
  13.     Key>Root,
  14.     inserting(Key,RightSubTree,NewRightSubTree).
  15.  
  16. add(null,0).
  17. add(tree(X,T1,T2),S):-
  18.     add(T1,S1),
  19.     add(T2,S2),
  20.     S is X+S1+S2.
  21.  
  22. count_leaves(null,0).
  23. count_leaves(tree(_,null,null),1).
  24. count_leaves(tree(_, L, R), N):-
  25.     count_leaves(L, NL),
  26.     count_leaves(R, NR),
  27.     N is NL + NR.
  28.  
  29. compute(tree(S,null,null),Result):-
  30.     Result is S.
  31. compute(tree(+,T1,T2),Result):-
  32.     Result is T1 + T2.
  33. compute(tree(-,T1,T2),Result):-
  34.     Result is T1 - T2.
  35. compute(tree(*,T1,T2),Result):-
  36.     Result is T1*T2.
  37. compute(tree(/,T1,T2),Result):-
  38.     Result is T1 / T2.
  39.  
  40. present(Item,[Item|_]).
  41. present(Item,[_|Tail]) :-
  42.     present(Item,Tail).
  43.  
  44. concatenating([],List,List).
  45. concatenating([Head|Tail],List,[Head|ResultedTail]) :-
  46.     concatenating(Tail,List,ResultedTail).
  47.    
  48. predecessors(Item,EntireList,ListOfPredecessors):-
  49.     append(ListOfPredecessors,[Item|_],EntireList).
  50.  
  51. successors(Item,EntireList,ListOfSuccessors):-
  52.     append(_,[Item|ListOfSuccessors],EntireList).
  53.  
  54. inserting(item,list,result):-
  55.     append(L1,L2,list),
  56.     append(L1,[item|L2],result).
  57.  
  58. deleting(item,list,result):-
  59.     append(L1,[item|L2],list),
  60.     append(L1,L2,result).
  61.  
  62. deletingall(X, [X], []):-!.
  63. deletingall(X, [X|Xs], Y):-!, deletingall(X, Xs, Y).
  64. deletingall(X, [T|Xs], Y):-!, deletingall(X, Xs, Y2), append([T], Y2, Y).
  65.  
  66. range(X, X, result):-!.
  67. range(X,Y,result):-
  68.     X1 is X+1,
  69.     append()...
  70.  
  71. preorder(null,[]).
  72. preorder(tree(Root,L,R),List):-
  73.     preorder(L,L1),
  74.     preorder(R,L2),
  75.     append([Root | L1], L2, List).
  76.  
  77. inorder: append(L1, [Root | L2], List).
  78. postorder: append(L1, L2, aux)
  79.            append(aux, Root, List).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement