PRZETWARZANIE LIST

Ć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.