Prolog - wytlumaczenie zadania.

0

Zaczalem sobie przegladac zadania z Prologa i znalazlem strone gdzie sa zadania i ich rozwiazania. Znalazlem cos takiego:

"Lista ma zawierać miesiące. Zdefiniować predykat wyświetlający jeden miesiąc przed i jeden po podanym nazwą miesiącu. Należy wykorzystać append/3."

Rozwiazanie jest pod tym linkiem: http://wikizmsi.zut.edu.pl/uploads/0/0f/ESIS_lab3_Zad2.pro

Moze ktos wyjasnic o co chodzi w tym kodzie linijka po linijcie? Czego uzywam w niektorych miejsach list i zmienny anonimowych? Prosze :/

1

Tu nie ma za dużo linijek do tłumaczenia. :) Wiesz w ogólności jak działa prolog? Nawroty, uzgodnienia itp.?

miesiac2( X, M1, M2) :-                      % linia 1
	append( _, [M1,X,M2 | _],                % linia 2
	[sty,lut,mar,kwi,maj,cze,lip,sie,wrz,paz,lis,gru]).     % linia 3

W pierwszej linii jest po prostu nagłówek predykatu i tyle, nie?

W drugiej i trzeciej masz zastosowanie standardowego predykatu append(A, B, C), który można by przetłumaczyć: znajdź takie A, B i C, żeby A++B==C (gdzie ++ to łączenie list).
A bez zmiennych anonimowych możesz napisać:

append(Poczatek, [M1,X,M2 | Koniec], [sty,lut,mar,kwi,maj,cze,lip,sie,wrz,paz,lis,gru]).

czyli: znajdź takie zmienne, żeby: Poczatek++[M1,X,M2]++Koniec==[sty,lut,mar,kwi,maj,cze,lip,sie,wrz,paz,lis,gru]

Coś jeszcze wyjaśnić trzeba?

0

A co wlasnie oznacza pierwsza linijka? Czyli: miesiac2( X, M1, M2)? Wiem, ze naglowek predykatu, ale jakby to brzmialo jakby to przetlumaczyc "na nasze"?

2
Majster15 napisał(a):

A co wlasnie oznacza pierwsza linijka? Czyli: miesiac2( X, M1, M2)? Wiem, ze naglowek predykatu, ale jakby to brzmialo jakby to przetlumaczyc "na nasze"?

No jakoś tak, jak w zadaniu: znajdź zmienne spełniające warunek, że w tablicy miesięcy są one pod rząd w kolejności M1, X, M2...

1 użytkowników online, w tym zalogowanych: 0, gości: 1