3. Listy – podział na głowę i ogon

Lista to uporządkowany ciąg elementów, rozdzielonych przecinkami i umieszczonych pomiędzy kwadratowymi nawiasami, o dowolnej długości. Elementem listy może być każdy term – stała, zmienna, liczba, inna lista, itp.

[a,b,c].

[a,123,[],[1,b],B].

Lista może być pusta [].

Prolog przetwarzając listy dzieli je na dwie części – głowę i ogon. Głową jest zawsze pierwszy element listy, a ogonem pozostała reszta. Gdy chcemy, by Prolog podzielił nam listę, używamy symbolu pionowej kreski | i wpisujemy nasze zapytanie po znaku zachęty (?-) w oknie głównym zgodnie z ogólnym wzorem:

[LISTA]=[G|O].

gdzie G to głowa, a O to ogon.

Zadania:

a) zobacz, czy w pustej liście można wyodrębnić głowę i ogon;

Rozwiązanie zadania

Lista: [].

Po znaku zachęty zgodnie z ogólnym wzorem wpisaliśmy pustą listę, a następnie podział na głowę i ogon – program wyświetlił nam komunikat „false”, co oznacza, że program nie znalazł ani głowy ani ogona listy.

b) stwórz zapytanie, które pokaże głowę i ogon w jednoelementowej liście;

Rozwiązanie zadania

Przykładowa lista: [1].

Do ogólnego wzoru podstawiamy naszą przykładową listę i całość wpisujemy po znaku zachęty. Program wyświetla nam, że głową naszej listy jest 1, a ogonem lista pusta. Oznacza to, że każda jednoelementowa lista posiada głowę, którą jest ten jeden jedyny element listy, ogonem zaś zawsze będzie w takim przypadku lista pusta.

c) sprawdź, co jest głową, a co ogonem w dwuelementowej liście;

Rozwiązanie zadania

Przykładowa lista: [2,3].

Zaczynamy od tego samego, co w poprzednich podpunktach, czyli od postawienia przykładowej listy do ogólnego wzoru. W odpowiedzi na nasze zapytanie pojawia się, że głową jest element 2, a ogonem jednoelementowa lista [3].

d)utwórz dwie listy – w pierwszej liście pierwszym elementem ma być inna lista, w drugiej liście inna lista ma być kolejnym elementem – sprawdź w obu przypadkach, co jest głową, a co ogonem;

Rozwiązanie zadania

Przykładowa lista: [[1,2,3],4,5].

Jako pierwszą sprawdzimy listę, w której pierwszym elementem jest lista. Przykładową listę podstawiamy do wzoru. Głową okazuje się lista, która jest pierwszym elementem przykładowej listy, a ogonem lista powstała z pozostałych elementów.

Przykładowa lista: [1,[2,3,4]].

W drugiej kolejności sprawdzamy listę, w której pierwszy element nie jest listą, jednak kolejny już tak. Po podstawieniu do wzoru dostajemy odpowiedź od programu, że głową naszej listy jest 1, czyli pierwszy element naszej przykładowej listy, zaś ogonem jednoelementowa lista, której elementem jest kolejna lista.

Przyglądając się zrobionym przez nas przykładom, można zauważyć, że głową listy zawsze jest jej pierwszy element, bez względu na to, czy jest to zwykły term, czy inna lista. Ogonem zaś zawsze jest lista, nawet jeżeli jest pusta, czy zawiera element w postaci innej listy.

Komentowanie jest wyłączone.