Въпроси по ПРОЛОГ

Решение на задачите от контролното, група А.

Решение на задачите от контролното, група А.

от Боян Табаков -
Number of replies: 0
 ::BEGIN CODE::
%zadacha 1 grupa A

zad1_p(_, [], 0):-!.
zad1_p(X, [H|T], N):-H mod X =:= 0, !, zad1_p(X, T, N1), N is N1 + 1.
zad1_p(X, [H|T], N):-zad1_p(X, T, N).

zad1_q([X], L2, [[X, N]]):-zad1_p(X, L2, N), !.
zad1_q([H|T], L2, [[H, N]|R]):-zad1_p(H, L2, N), zad1_q(T, L2, R).

%zadacha 2 grupa A

int(0).
int(X):-int(Y), X is Y + 1.

between(X, Y, X):- X =< Y.
between(X, Y, Z):- X < Y, X1 is X + 1, between(X1, Y, Z).

ph(X, X, _, 0):-!.
ph(X, _, D, 0):- D > X, !.
ph(X, Y, D, N):- D =< X, X mod D =:= 0, Y mod D =\= 0, !, D1 is D + 1, ph(X, Y, D1, N1), N is N1 + 1.
ph(X, Y, D, N):- D =< X, D1 is D + 1, ph(X, Y, D1, N).

zad2_p(X, Y, N):- ph(X, Y, 2, N).

zad2_gen_xy([X, Y]):-int(X), between(1, X, Y), zad2_p(X, Y, Y).

::END CODE::

Това е моето решение, но не давам 100% гаранция :) При моите тестове работи.