Guest User

Untitled

a guest
Jul 6th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.64 KB | None | 0 0
  1. gen(0).
  2.  
  3. gen(X) :- gen(X,1).
  4. gen(X,X).
  5. gen(X,Y) :- X is (-1)*Y.
  6. gen(X,Y) :- Z is Y + 1, gen( X, Z ).
  7.  
  8. sum( X, Y, Z ) :-
  9.     \+ var(X),
  10.     \+ var(Y),
  11.     Z is X + Y,!.
  12.    
  13. sum( X, Y, Z ) :-
  14.     \+ var(X),
  15.     \+ var(Z),
  16.     Y is Z - X,!.
  17.    
  18. sum( X, Y, Z ) :-
  19.     \+ var(Y),
  20.     \+ var(Z),
  21.     X is Z - Y,!.
  22.  
  23.  
  24. sum( X, Y, Z ) :-
  25.     var(X),
  26.     var(Y),
  27.     \+var(Z),
  28.     gen(X),
  29.     Y is Z - X.
  30.    
  31. sum( X, Y, Z ) :-
  32.     \+var(X),
  33.     var(Y),
  34.     var(Z),
  35.     gen(Y),
  36.     Z is X + Y.
  37.    
  38. sum( X, Y, Z ) :-
  39.     var(X),
  40.     \+var(Y),
  41.     var(Z),
  42.     sum(Y, X, Z).
  43.    
  44.  
  45. mniejsza_suma_arytm(X,Y) :- mniejsza_suma_arytm(X,Y,0).
  46. mniejsza_suma_arytm(X,0,L) :-
  47.     A is X-L,
  48.     A<0,!.
  49. mniejsza_suma_arytm(X,Y,L) :-
  50.     A is X-L,
  51.     K is L+1,
  52.     mniejsza_suma_arytm(A, B, K ),
  53.     Y is B+L.
  54.  
  55. wieksza_suma_arytm(X,Y) :- wieksza_suma_arytm(X,Y,0).
  56. wieksza_suma_arytm(X,L,L) :-
  57.     A is X-L,
  58.     A<0,!.
  59. wieksza_suma_arytm(X,Y,L) :-
  60.     A is X-L,
  61.     K is L+1,
  62.     wieksza_suma_arytm(A, B, K ),
  63.     Y is B+L.
  64.  
  65. bijekcja(0,0).
  66. bijekcja( X, Y ) :- bijekcja(1, X, Y).
  67.  
  68. bijekcja( N, X, Y ):-
  69.     mniejsza_suma_arytm( N, M ),
  70.     wieksza_suma_arytm( N, W),
  71.     X is N-M,
  72.     Y is W-N-1.
  73.  
  74. bijekcja( N, X, Y ):-
  75.     mniejsza_suma_arytm( N, M ),
  76.     wieksza_suma_arytm( N, W),
  77.     A is N-M,
  78.     B is W-N-1,
  79.     A>0,
  80.     X is -A,
  81.     Y is B.
  82.  
  83. bijekcja( N, X, Y ):-
  84.     mniejsza_suma_arytm( N, M ),
  85.     wieksza_suma_arytm( N, W),
  86.     A is N-M,
  87.     B is W-N-1,
  88.     B>0,
  89.     X is A,
  90.     Y is -B.
  91.    
  92. bijekcja( N, X, Y ):-
  93.     mniejsza_suma_arytm( N, M ),
  94.     wieksza_suma_arytm( N, W),
  95.     A is N-M,
  96.     B is W-N-1,
  97.     A>0, B>0,
  98.     X is -A,
  99.     Y is -B.
  100.  
  101.    
  102. bijekcja( N, X, Y ) :-
  103.     M is N+1,
  104.     bijekcja( M, X, Y).
  105.  
  106.  
  107.  
  108. sum(X, Y, Z) :-
  109.     var(X),
  110.     var(Y),
  111.     var(Z),
  112.     bijekcja(X,Y),
  113.     Z is X + Y.
Add Comment
Please, Sign In to add comment