Advertisement
steffffffan

P2_13

Nov 20th, 2022
387
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.72 KB | None | 0 0
  1. % listdiv(N:Integer, R:Lista, D:Integer)
  2. % (i,o,i), (i,i,i)
  3. % creeaza lista divizorilor proprii ai lui N
  4. % N = numarul ai carui divizori ii aflam
  5. % R = lista divizorilor lui N
  6. % D = contor divizor D>=2
  7. listdiv(_, [], 0):-!.
  8. listdiv(1, [], _):-!.
  9. listdiv(0, [], _):-!.
  10. listdiv(N, [], D):- D>=N, !.
  11. listdiv(N, R, D) :-
  12.     N mod D =:= 0,
  13.     D1 is D+1,
  14.     listdiv(N,R1,D1),
  15.     R = [D|R1].
  16. listdiv(N,R,D) :-
  17.     N mod D =\= 0,
  18.     D1 is D+1,
  19.     listdiv(N, R, D1).
  20.  
  21.  
  22. % conct(L1,L2,R)
  23. % (i,i,i), (i,i,o), (o,o,i)
  24. % concateneaza 2 liste
  25. % L1 = prima lista
  26. % L2 = a doua lista
  27. % R = lista formata din elementele lui L1, apoi L2
  28. conct([],L2,L2).
  29. conct([H|T],L2,[H|R]) :- conct(T,L2,R).
  30.  
  31. % addiv(L, R)
  32. % (i,o), (i,i)
  33. % creeaza lista obtinuta prin adaugarea dupa fiecare element
  34. % a divizorilor proprii ai acestuia
  35. % L = lista initiala
  36. % R = lista in care s-au adaugat divizorii
  37. addiv([],[]).
  38. addiv([H|T],R) :-
  39.     addiv(T, RT),
  40.     listdiv(H, RD, 2),
  41.     conct(RD, RT, R1),
  42.     R=[H|R1].
  43.  
  44. % addivet(L,R)
  45. % (i,o), (i,i)
  46. % in fiecare sublista, dupa fiecare element adauga divizorii
  47. % proprii ai acestuia
  48. % L = lista initiala
  49. % R = lista continand sublistele modificate
  50. addivet([], []).
  51. addivet([H|T],[H|R]):-
  52.     number(H),
  53.     addivet(T,R).
  54. addivet([H|T],[H1|R]) :-
  55.     is_list(H),
  56.     addiv(H,H1),
  57.     addivet(T,R).
  58.  
  59. testaddiv() :-
  60.     addiv([],[]),
  61.     addiv([1,2,3],[1,2,3]),
  62.     addiv([9,6,2],[9,3,6,2,3,2]),
  63.     addiv([34,16,10],[34,2,17,16,2,4,8,10,2,5]),
  64.     not(addiv([15],[3,5])).
  65.  
  66. testaddivet():-
  67.     addivet([],[]),
  68.     addivet([1,2,3],[1,2,3]),
  69.     addivet([1,[2,5,7],4,5,[1,4],  3,2,[6,2,1],    4,[7,2,8,1],    2],
  70.             [1,[2,5,7],4,5,[1,4,2],3,2,[6,2,3,2,1],4,[7,2,8,2,4,1],2]).
  71.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement