Контролно по Логическо програмиране, 2006 год.
А група: 1 зад. Напишете дефиниции на Пролог на:
а) предикат p1(x, y), който по дадени x,yN+ разпознава дали сумата от делителите на x е равна на y.
б) предикат p2(x,Y), който по дадено xN+ генерира в Y (последователно, при преудовлетворяване) всички yN+, такива че сумата от делителите на y е равна на x.
в) предикат p3(x, L), който по дадено xN+ връща в L списък, който включва всички yN+, такива че сумата от делителите на y е равна на x.
2 зад. Напишете програма на Пролог, която по даден списък l = [ l1, …, ln], n0, чийто елементи са непразни списъци от числа, връща списък m= [m1, …, mn] от максималните им елементи (т.е. mi= maxli, 1 i n).
В група: 1 зад. Напишете дефиниции на Пролог на:
а) предикат p1(x, y), който по дадени x,yN+ разпознава дали броят на делителите на x е равен на y.
б) предикат p2(x,Y), който по дадено xN+ генерира в Y (последователно, при преудовлетворяване) всички yN+, такива че броят на делителите на y е равен на x.
в) предикат p3(x, m, L), който по дадени x, mN+ връща в L списък, който включва всички yN+, ym, такива че броят на делителите на y е равен на x.
2 зад. Напишете програма на Пролог, която по даден списък l = [ l1, …, ln], n0, чийто елементи са непразни списъци от числа, връща списък s = [ s1, …, sn] от сумите на всеки от елементите на l (т.е. si= Σli, 1 i n).
BONUS Да наречем представяне на матрицата A = (ai,j), 1 i m, 1 j n, списъка
lA = [ [ a1,1, …, a1,n], … , [am,1, …, am,n] ].
Напишете програми на Пролог, които:
а) събират две матрици с една и съща размерност
б) транспонират матрица
в) умножават матрици с размерност mxn и nxk.
Тук, разбира се, предполагаме, че матриците, които се четат, и матрицата, която се връща, са представени по описания по-горе начин.
Контролно по Логическо програмиране, 2007 год.
1 зад. Казваме, че списъкът l = [ x1, …, xn], е палиндром ако [ x1, …, xn] = [ xn, …, x1], а l е почти палиндром, ако
А група: след промяна на някой елемент на l се получава палиндром.
В група: след вмъкване на на някакъв елемент (на произволна позиция) в дадения списък l се получава палиндром.
Напишете програма, която разпознава почти-палиндромите.
2 зад. Нека А е следното множество от естествени числа:
А група: A = { x| x = y2 + z 2 за някои y,zN}
В група: A = { x| x = 2y + 2 z за някои y,zN}.
Напишете а) разпознавател за множеството А; б) генератор за А.
Сподели с приятели: |