PLO-LAB
2
Proste programy
Reprezentacja list
1)
Definiujemy,
że: 0 jest liczbą i jeśli x jest liczbą to s(x) jest także
liczbą. Napisać klauzule definiujące taką relację liczba(X). Testujmy:
a) Czy s(s(0)) jest liczbą? b) Jakie liczby są?
2)
Zdefiniować
predykat plus(X, Y, Z), który zwróci w Z sumę argumentów X i
Y, wykorzystując z w/w definicji liczb.
Reprezentacja
list
-
lista pusta []
-
lista
niepusta, k-elementowa: [E1,E2,...,Ek]
-
lista nie
pusta: [Elem|Lista]
gdzie Elem jest pierwszym elementem listy, a Lista zawiera dalszą część listy
-
lista
niepusta: [_|_]
-
np. lista
2-elementowa:
[E1, E2]
lub [E1
| [E2]]
lub [E1
| [E2 | [] ] ]
lub [E1,
E2 | [] ]
3)
Zdefiniować
predykat lista(L), który odnosi sukces jeśli L jest listą według
w/w reprezentacji.
4)
Zdefiniować
predykat dlugosc(L, D), który zwróci w D długość listy L.
Używajmy w tej chwili tylko 0 i symbolu s do reprezentowania
liczb naturalnych. (Istnieje zbudowany predykat length(L, D).)
5)
Zdefiniować
następujące predykaty:
-
first(X, L)
: X jest pierwszym elementem listy L
-
last(X, L) :
X jest ostatnim elementem listy L
-
member(X, L)
: X jest elementem listy L
-
append(L1,
L2, L) : L jest połączeniem listy L1 i listy L2
-
prefix(P, L)
: P jest prefiksem listy L
-
suffix(S, L)
: S jest sufiksem listy L
-
sublist(L1,
L2) : L1 jest podlistą listy L2
-
podlista(L1,
L2) : L1 jest podlistą niekoniecznie spójną listy L2
-
czesc_wspolna(L1,
L2, W) : W zawiera elementy wspólne list L1 i L2
-
uzgadnialne(Lista)
: wszystkie elementy listy można ze sobą uzgodnić