Archive for category Prolog Код

Генератор за подмножество

Генератор на пролог за подмножество на друго. Като също може да разпознае дали дадено множество е подмножество на друго, без повтарящи се символи. Ако има повторения генератора ще зацикли на първия символ пр. [3,3,3,3,3,….] member(X,[X|L]). member(X,[Y|L]):-member(X,L). submn([],_). submn([X|L1],[Y|L2]):-member(X,[Y|L2]),submn(L1,L2),not(member(X,L1)). ?-submn(X,[3,1,2,4,5]),write(X),1<0. А за разпознаване на множество дали е подмножество на друго със повторения може да използвате това: […]

Няма коментари

Генератор за Prolog

Генератор без повторения на всички числа z, които се представят във вида z = x^y за x,y > 1 естествени числа. div_while_possible(X, X):-!. div_while_possible(Z, X):-Z mod X =:= 0, Z1 is Z // X, div_while_possible(Z1, X). Да се напише генератор gen_list(+M,+N,-L) на всички строго растящи редици от естествени числа от M до N включително. Допуска […]

Няма коментари

Задача на Пролог – генератори

Дефиниция на ПРОЛОГ на предикат p(X,Y,N), който по дадени естествени числа X,Y връща в N: Вариант А броят на числата, които делят X, но не делят Y Вариант Б броят на общите делители на X и Y б) Да се напише генератор без повторения на множеството Вариант А { (x,y) | x>=1, y>=1 и броят […]

Няма коментари

Prolog – Брой на кратни елементи в списък, сума на по-малки елементи в списък

Дефиниция на ПРОЛОГ на предикат p(X,L,N), който по даден списък от естествени числа L и естествено число X връща в числото N: броят на тези елементи на L, които са кратни на X p(X,[],0). p(X,[Y|L],N):-Y mod X =:= 0, p(X,L,N1), N is N1+1. p(X,[Y|L],N):-Y mod X > 0, p(X,L,N). %?-p(4,[1,4,6,16,9,4],X),write(X),nl. сумата на тези елементи на […]

Няма коментари

Prolog – Arithmetic progression – Проверка за аритметическа прогресия

Програма за проверка, дали елементите на даден списък образуват аритметическа прогресия на Пролог.\ aritmethmeticProgression([X,Y|[]],D):- D =:= Y-X. aritmethmeticProgression([X,Y|L],D):- D =:= Y-X, aritmethmeticProgression([Y|L],D). arithProgression([X,Y|[]]). arithProgression([X,Y|L]) :-D is Y-X, ar([Y|L],D). ?-arithProgression([1,2,3,4,5]) или по-просто aritm([X,Y]). aritm([X,Y|[Y1|S]]):-aritm([Y,Y1|S]), X-Y=:=Y-Y1. чрез сума на елементите на списък може да намерим, по даден списък от списъци от числа, дали неговите суми на списъци, […]

Няма коментари