Advertisement
mvujas

Prolog 24/ 01/ 2017

Jan 24th, 2017
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.09 KB | None | 0 0
  1. /* Kombinacija k elemenata iz liste */
  2. komb(_, 0, []).
  3. komb([ G | R ], K, [ G | O ]):- K > 0,
  4.     K1 is K - 1,
  5.     komb(R, K1, O).
  6. komb([ _ | R ], K, O):- K > 0,
  7.     komb(R, K, O).
  8.  
  9. dodajNaKraj(E, [], [ E ]).
  10. dodajNaKraj(E, [ G | R ], S):- dodajNaKraj(E, R, S1),
  11.     S = [ G | S1 ].
  12.  
  13. /* Permutacije k elemenata iz liste */
  14. perm(_, 0, []).
  15. perm([ G | R ], K, [ G | O ]):- K > 0,
  16.     K1 is K - 1,
  17.     komb(R, K1, O).
  18. perm([ G | R ], K, O):- K > 0,
  19.     K1 is K - 1,
  20.     komb(R, K1, O1),
  21.     dodajNaKraj(G, O1, O).
  22. perm([ _ | R ], K, O):- K > 0,
  23.     komb(R, K, O).
  24.  
  25.  
  26. /*perm drugi nacin*/
  27. perm1([], []).
  28. perm1([ G | R ], L):- perm1(R, L1), ubaci(G, L1, L).
  29.  
  30. ubaci(X, [], [X]).
  31. ubaci(X, [G|R], [X,G|R]).
  32. ubaci(X, [G|R], [G|R1]):- ubaci(X, R, R1).
  33.  
  34. /* Napraviti kombinaciju tako da je suma u kombinaciji N */
  35. sum([], 0).
  36. sum([ G | L ], R):- sum(L, R1),
  37.     R is R1 + G.
  38.  
  39. sumkomb(L, Q, R):- length(L, N),
  40.     blabla(L, N, Q, R).
  41.    
  42. blabla(L, N, Q, R):- N > 0,
  43.     komb(L, N, R),
  44.     sum(R, Q).
  45. blabla(L, N, Q, R):- N > 0,
  46.     N1 is N - 1,
  47.     blabla(L, N1, Q, R).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement