GRUPA D
Zad. 1 Załóżmy, że w bazie mamy następujące fakty:
lubi(kinga, kino).
lubi(rafal, rowery).
lubi(kinga, joga).
lubi(rafal, kino).
Odp:
?- lubi(kinga, X), lubi(rafal, X).
X = kino
Zad.2. Proszę napisać predykat przypisujący do zmiennej X ogon listy L.
G = 1, X = [2,3,4,5], L=[G|X].
G = 1
X = [2, 3, 4, 5]
L = [1, 2, 3, 4, 5]
listtran([G|GT],[E|ET]) :- tran(G,E), listtran(GT,ET).
sublist(X,Y):-append(L1,L2,Y), append(X,L3,L2).
Zad.3 W którym z poniższych przypadków można w miejsce znaku zapytania wstawić znak równości (postaw przy nich znak+)? Jakie wartości będą miały zmienne A i B
a) [A,B]=[a|b]. A= B=
b) [A|B]=[a|[b|c]]. + A = a B = [b|c]
c) [A|B]=[a,b]. + A = a B = [b]
d) [A,B]=[a|[b|c]].
e) [A,B]=[a|b|c].
f) [A|B]=[a|b]. + A = a B = b
g) [A|B]=[a|b|c]. + A = a B = b|c
Zad.4 Zakładając, że mamy zdefiniowane fakty w postaci rodzic(X,Y), gdzie X jest rodzicem, Y potomkiem oraz fakty mezczyzna (X), proszę napisać relację(X,Y), która będzie spełniona, gdy X jest bratem Y.
brat(X,Y):-mezczyzna(X),rodzic(Z,X),rodzic(Z,Y), X\=Y.
Zad.5 Napisać predykat last(X,[Y]) będący prawdziwy jezeli X jest ostatnim elementem listy Y.
podlista(X,L):- append(L1,L2,L), append(X,L3,L2).
sublist(X,Y):-append(L1,L2,Y), append(X,L3,L2).
GRUPA C
Zad 1. Jaka będzie wartość zmiennej Odpowiedz w poniższym wywołaniu?
Xyz(c,[a,b,c,d,d,c,b,a],Odpowiedz).
Następującego programu:
xyz(X,[X|Xs],Xs).
xyz(X,[Y|Ys],[Y|Zs]) :- xyz(X,Ys,Zs).
Odpowiedz = [a, b, d, d, c, b, a]
Zad. 2 Napisz strukturę reprezentującą prostokąt o krawędziach równomiernych i prostopadłych do osi współrzędnych.
vertical(line(point(0,0),point(0,2))).
horizontal(line(point(0,2),point(4,2))).
vertical(line(point(4,2),point(4,0))).
horizontal(line(point(4,0),point(0,0))).
Z wzoru:
vertical( line(point(X,Y),
point(X,Z))).
horizontal( line(point(X,Y),
point(Z,Y))).
Zad.3 Zakładając, że mamy zdefiniowane fakty w postaci rodzic(X,Y), gdzie X jest rodzicem, Y potomkiem, i fakty kobieta(X), proszę napisać relację córka(X,Y), która będzie spełniona, gdy X jest córką Y.
corka(X,Y):-kobieta(X),rodzic(Y,X).
Zad.4 Zakładając, że mamy następujący zbiór faktów:
lubi(jan, tatry).
lubi(jan, beskidy).
lubi(jerzy, beskidy).
lubi(jerzy, bieszczady) .
lubi(józef, sudety).
Lubi(justyna, gświętokrzyskie).
Proszę napisać regułę bratniadusza/2, która będzie prawdziwa, gdy osoby podane jako argumenty lubią to samo.
bratniadusza(X,Y):- lubi(X,Z), lubi(Y,Z), X\=Y.
Zad.5 Napisać relację podlista(X,L), która będzie prawdziwa gdy X jest fragmentem (podlistą) listy L.
podlista(X,L):- append(L1,L2,L), append(X,L3,L2).
sublist(X,Y):-append(L1,L2,Y), append(X,L3,L2).
……………………………………………………………………
silnia(0, 1).
silnia(N, S) :- N > 0, N1 is N-1, silnia(N1, S1), S is N*S1.
………………………………………………………………………..
Ćwiczenie 1
0 Która z sekwencji jest atomem, zmienną?
1. vINCENT
2. Footmassage
3. variable23
4. Variable2000
5. big_kahuna_burger
6. ’big kahuna burger’
7. big kahuna burger
8. ’Jules’
9. _Jules
10. ’_Jules’
Vincent jest atom: zaczyna się od małej litery.
Footmassage jest zmienna: zaczyna się z dużej litery.
variable23 jest atom: zaczyna się od małej litery.
Variable2000 jest zmienna: zaczyna się z dużej litery.
big_kahuna_burger jest atom: zaczyna się od małej litery.
"Big Kahuna burger" jest atom: jest między dwoma cudzysłów (').
Big Kahuna burger nie jest ani: zmienne nigdy nie może zawierać spacji i atomy nie mogą albo chyba atom zaczyna kończy się '.
'Jules' jest atomem: jest on umieszczony pomiędzy ".
_Jules Jest zmienna: zaczyna się od _.
"_Jules'is Atom: jest on umieszczony pomiędzy".
--Ile faktów, reguł, klauzul i predykatów jest w bazie
wiedzy:
0 woman(vincent).
woman(mia).
man(jules).
person(X):- man(X); woman(X).
loves(X,Y):- father(X,Y).
father(Y,Z):- man(Y), son(Z,Y).
father(Y,Z):- man(Y), daughter(Z,Y).
odp.
woman(mia).
man(jules).
person(X) :- man(X); woman(X).
loves(X,Y) :- knows(Y,X).
father(Y,Z) :- man(Y), son(Z,Y).
father(Y,Z) :- man(Y), daughter(Z,Y).
Zadanie 2
0Zdefiniować dwuargumentowy predykat, który jest prawdziwy, gdy drugi argument jest typu integer i jest o jeden większy od pierwszego argumentu. Np. increment(4,5) powinien być prawdziwy, a increment(4,6) nie.
0Zdefiniować trzyargumentowy predykat, który jest prawdziwy, gdy suma dwóch pierwszych argumentów jest równa trzeciemu. Np. sum(4,5,9) powinno być prawdziwe, a sum(4,6,12) nie.
increment(X,Y) :- Y is X + 1.
sum(X,Y,Z) :- Z is X + Y.
…………………………………………………………….
GRUPA D
Zad. 1 Załóżmy, że w bazie mamy następujące fakty:
lubi(kinga, kino).
lubi(rafal, rowery).
lubi(kinga, joga).
lubi(rafal, kino).
Odp:
?- lubi(kinga, X), lubi(rafal, X).
X = kino
Zad.2. Proszę napisać predykat przypisujący do zmiennej X ogon listy L.
G = 1, X = [2,3,4,5], L=[G|X].
G = 1
X = [2, 3, 4, 5]
L = [1, 2, 3, 4, 5]
listtran([G|GT],[E|ET]) :- tran(G,E), listtran(GT,ET).
sublist(X,Y):-append(L1,L2,Y), append(X,L3,L2).
Zad.3 W którym z poniższych przypadków można w miejsce znaku zapytania wstawić znak równości (postaw przy nich znak+)? Jakie wartości będą miały zmienne A i B
a) [A,B]=[a|b]. A= B=
b) [A|B]=[a|[b|c]]. + A = a B = [b|c]
c) [A|B]=[a,b]. + A = a B = [b]
d) [A,B]=[a|[b|c]].
e) [A,B]=[a|b|c].
f) [A|B]=[a|b]. + A = a B = b
g) [A|B]=[a|b|c]. + A = a B = b|c
Zad.4 Zakładając, że mamy zdefiniowane fakty w postaci rodzic(X,Y), gdzie X jest rodzicem, Y potomkiem oraz fakty mezczyzna (X), proszę napisać relację(X,Y), która będzie spełniona, gdy X jest bratem Y.
brat(X,Y):-mezczyzna(X),rodzic(Z,X),rodzic(Z,Y), X\=Y.
Zad.5 Napisać predykat last(X,[Y]) będący prawdziwy jezeli X jest ostatnim elementem listy Y.
podlista(X,L):- append(L1,L2,L), append(X,L3,L2).
sublist(X,Y):-append(L1,L2,Y), append(X,L3,L2).
GRUPA C
Zad 1. Jaka będzie wartość zmiennej Odpowiedz w poniższym wywołaniu?
Xyz(c,[a,b,c,d,d,c,b,a],Odpowiedz).
Następującego programu:
xyz(X,[X|Xs],Xs).
xyz(X,[Y|Ys],[Y|Zs]) :- xyz(X,Ys,Zs).
Odpowiedz = [a, b, d, d, c, b, a]
Zad. 2 Napisz strukturę reprezentującą prostokąt o krawędziach równomiernych i prostopadłych do osi współrzędnych.
vertical(line(point(0,0),point(0,2))).
horizontal(line(point(0,2),point(4,2))).
vertical(line(point(4,2),point(4,0))).
horizontal(line(point(4,0),point(0,0))).
Z wzoru:
vertical( line(point(X,Y),
point(X,Z))).
horizontal( line(point(X,Y),
point(Z,Y))).
Zad.3 Zakładając, że mamy zdefiniowane fakty w postaci rodzic(X,Y), gdzie X jest rodzicem, Y potomkiem, i fakty kobieta(X), proszę napisać relację córka(X,Y), która będzie spełniona, gdy X jest córką Y.
corka(X,Y):-kobieta(X),rodzic(Y,X).
Zad.4 Zakładając, że mamy następujący zbiór faktów:
lubi(jan, tatry).
lubi(jan, beskidy).
lubi(jerzy, beskidy).
lubi(jerzy, bieszczady) .
lubi(józef, sudety).
Lubi(justyna, gświętokrzyskie).
Proszę napisać regułę bratniadusza/2, która będzie prawdziwa, gdy osoby podane jako argumenty lubią to samo.
bratniadusza(X,Y):- lubi(X,Z), lubi(Y,Z), X\=Y.
Zad.5 Napisać relację podlista(X,L), która będzie prawdziwa gdy X jest fragmentem (podlistą) listy L.
podlista(X,L):- append(L1,L2,L), append(X,L3,L2).
sublist(X,Y):-append(L1,L2,Y), append(X,L3,L2).
……………………………………………………………………
silnia(0, 1).
silnia(N, S) :- N > 0, N1 is N-1, silnia(N1, S1), S is N*S1.
………………………………………………………………………..
Ćwiczenie 1
0 Która z sekwencji jest atomem, zmienną?
1. vINCENT
2. Footmassage
3. variable23
4. Variable2000
5. big_kahuna_burger
6. ’big kahuna burger’
7. big kahuna burger
8. ’Jules’
9. _Jules
10. ’_Jules’
Vincent jest atom: zaczyna się od małej litery.
Footmassage jest zmienna: zaczyna się z dużej litery.
variable23 jest atom: zaczyna się od małej litery.
Variable2000 jest zmienna: zaczyna się z dużej litery.
big_kahuna_burger jest atom: zaczyna się od małej litery.
"Big Kahuna burger" jest atom: jest między dwoma cudzysłów (').
Big Kahuna burger nie jest ani: zmienne nigdy nie może zawierać spacji i atomy nie mogą albo chyba atom zaczyna kończy się '.
'Jules' jest atomem: jest on umieszczony pomiędzy ".
_Jules Jest zmienna: zaczyna się od _.
"_Jules'is Atom: jest on umieszczony pomiędzy".
--Ile faktów, reguł, klauzul i predykatów jest w bazie
wiedzy:
0 woman(vincent).
woman(mia).
man(jules).
person(X):- man(X); woman(X).
loves(X,Y):- father(X,Y).
father(Y,Z):- man(Y), son(Z,Y).
father(Y,Z):- man(Y), daughter(Z,Y).
odp.
woman(mia).
man(jules).
person(X) :- man(X); woman(X).
loves(X,Y) :- knows(Y,X).
father(Y,Z) :- man(Y), son(Z,Y).
father(Y,Z) :- man(Y), daughter(Z,Y).
Zadanie 2
0Zdefiniować dwuargumentowy predykat, który jest prawdziwy, gdy drugi argument jest typu integer i jest o jeden większy od pierwszego argumentu. Np. increment(4,5) powinien być prawdziwy, a increment(4,6) nie.
0Zdefiniować trzyargumentowy predykat, który jest prawdziwy, gdy suma dwóch pierwszych argumentów jest równa trzeciemu. Np. sum(4,5,9) powinno być prawdziwe, a sum(4,6,12) nie.
increment(X,Y) :- Y is X + 1.
sum(X,Y,Z) :- Z is X + Y.