ĆWICZENIE 1
Zdefiniuj następujące predykaty:
a) lista_liczbowa/1
Opis: lista_liczbowa(L) spełniony, gdy elementami listy L są wyłącznie liczby.
Sprawdzić działanie predykatu na celach:
?- lista_liczbowa([1,-2,0]).
?- lista liczbowa([2,a,4]).
b) kwadrat_listy/2
Opis: kwadrat_listy(L1, L2) spełniony, gdy dla danej listy liczbowej lista L2 zawiera kwadraty elementów listy L1. Np. L1=[-2,5], L2=[4, 25].
Sprawdzić działanie predykatu na celach:
?- kwadrat_listy([-2,5], [4,25]).
?- kwadrat_listy([-2,5], [5,25]).
?- kwadrat_listy([-2,5], X).
c) wzorzec_listy/2
Opis: wzorzec_listy(L1,L2) spełniony, gdy dla danej listy L1, lista L2 zawiera wzorce elementów listy według zasady: liczba - *, stała – a, zmienna – z, lista – l, inny term złożony
– tz. Np. L1= [2, prolog, [a,b],X,Y, f(x,y)], L2=[*,a,l,z,z,tz].
Sprawdź działanie predykatu na celach:
?- wzorzec_listy([2,3,[1],[1,2]],[*,*,l,l]).
?- wzorzec_listy([2,3,[1],5],[*,*,l,l]).
?- wzorzec_listy([2,3,[1],5],X).
?- wzorzec_listy([2,3+2,[1],[1,2]],[*,*,l,l]).
?- wzorzec_listy([2,3+2,[1],[1,2]],X).
d) podział_listy/3
Opis: podział_listy(L1,L2,L3) spełniony, gdy dla danej listy L1, lista L2 zawiera liczby występujące w liście L1, a lista L3 pozostałe elementy. Np. L1=[a,3,4,c,5], L2=[3,4,5], L3=[a,c].
Sprawdź działanie predykatu na celach:
? – podział_listy([a,3,4,c,5],[3,4,5],[a,c]).
? – podział_listy([a,3,4,c,5],X,[a,c]).
? – podział_listy([a,3,4,c,5],[3,4,5],X).
? – podział_listy([a,3,4,c,5],X,Y).
? – podział_listy(X,[3,4,5],[a,c]).
Do wszystkich definicji dołącz odpowiedzi prologu jako komentarz.