Advertisement
steffffffan

P2_4

Nov 20th, 2022
422
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.25 KB | None | 0 0
  1. % 4.
  2. % a) Sa se interclaseze fara pastrarea dublurilor doua liste sortate.
  3.  
  4. hmin(A,B,A):-A<B,!.
  5. hmin(A,B,B):-A>=B.
  6.  
  7. hmax(A,B,A):-A>B,!.
  8. hmax(A,B,B):-A=<B.
  9.  
  10.  
  11. % interclasarea e comutativa
  12. interclasare([],B,R) :- !,interclasare(B,[],R).
  13.  
  14. % eliminam dublurile din lista ramasa (aia mai lunga)
  15. interclasare([],[],[]):-!.
  16. interclasare([H],[],[H]):-!.
  17. interclasare([H,H|T],[],R):-!, interclasare([H|T],[],R).
  18. interclasare([H,A|T],[],[H|R]):-!, A=\=H, interclasare([A|T],[],R).
  19.  
  20. % interclasam 2 liste pana una din ele devine []
  21. interclasare(A,B,R):-
  22.     interclasare(A,[],[HA|TA]), % eliminam duplicatele
  23.     interclasare(B,[],[HB|_]), % din fiecare lista
  24.     HA<HB, !,
  25.     interclasare(TA,B,T),
  26.     interclasare([HA|T],[],R).
  27.  
  28. interclasare(A,B,R):-
  29.     interclasare(A,[],[HA|_]), % eliminam duplicatele
  30.     interclasare(B,[],[HB|TB]), % din fiecare lista
  31.     HA>HB, !,
  32.     interclasare(TB,A,T),
  33.     % in loc de R=[HB|T], mai concatenez o data cu []
  34.     % ca sa elimin duplicatele intre HB si inceputul lui T
  35.     interclasare([HB|T],[],R).
  36.  
  37. interclasare(A,B,R):-
  38.     interclasare(A,[],[HA|TA]), % eliminam duplicatele
  39.     interclasare(B,[],[HB|TB]), % din fiecare lista
  40.     HA=HB, !,
  41.     interclasare(TA,TB,T),
  42.     interclasare([HA|T],[],R).
  43.  
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement