Advertisement
Bch_50

Untitled

May 20th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. split(L,0,[],L) :- !.
  2. split([X|Xs],N,[X|Ys],Zs) :- N > 0, N1 is N - 1, split(Xs,N1,Ys,Zs).
  3.  
  4. range([H | T], L, L, []) :- !.
  5. range([H | T], N, L, [H | Tail]) :- N < L, N1 is N + 1, range(T, N1, L, Tail).
  6.  
  7. element_at([H | T], 0, H) :- !.
  8. element_at([H | T], N, R) :- N1 is N - 1, element_at(T, N1, R).
  9. divide(T, X, L, R) :- length(T, N), N1 is N / 2, N2 is N1 + 1, split(T, N2, L1, R), range(L1, 0, N1, L), element_at(L1, N1, X).
  10.  
  11. tree_build([], []) :- !.
  12. tree_build(T, (X, L, R)) :- divide(T, X, Left, Right), tree_build(Left, L), tree_build(Right, R).
  13.  
  14. map_get(((Key, Val), L, R), Key, Val) :- !.
  15. map_get(((XVal, XKey), L, R), Val, Key) :- (XVal > Val, map_get(L, Val, Key)) ; (XVal < Val, map_get(R, Val, Key)).
  16.  
  17. map_replace([], _, _, []) :- !.
  18. map_replace(((Val, Key), L, R), Val, NewKey, ((Val, NewKey), L, R)) :- !.
  19. map_replace(((XVal, XKey), L, R), Val, NewKey, ((XVal, XKey), NewL, R)) :- XVal > Val, map_replace(L, Val, NewKey, NewL).
  20. map_replace(((XVal, XKey), L, R), Val, NewKey, ((XVal, XKey), L, NewR)) :- XVal < Val, map_replace(R, Val, NewKey, NewR).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement