Uda sięWam takie coś zrobić, z komentarzami własnymi w Prologu:
-
Zaprogramować predykat o nazwie beznawiasow definiujący
wyrażenia arytmetyczne złożone ze stałych a,b,c,d,e,f,g,h i
dwuargumentowych operatorów +,*, takie że do ich przedstawienia w
postaci infiksowej nie trzeba używać nawiasów.
Np. +(+(b,c),a) jest takim wyrażeniem, zaś +(a,+(b,c)) nie.
Można to sprawdzić, wywołując w Prologu ?- write( +(+(b,c),a) ).
oraz ?- write( +(a,+(b,c)) ).
Oczywiście wyrażenia reprezentujemy jako termy Prologu. -
Zaprogramować predykat dwuargumentowy
ilenawiasow(Wyrazenie,Liczba)
gdzie Wyrazenie jest wyrażeniem arytmetycznym złożonym ze stałych
i operatorów j.w., a Liczba jest liczbą par nawiasów w tym
wyrażeniu przedstawionym w postaci infiksowej (czyli np.
wydrukowanym przez predykat wbudowany write).
Oczywiście liczymy tylko nawiasy niezbędne.
Np. zachodzi ilenawiasow( +(a,+(b,c)), 1 ) oraz
ilenawiasow( +(+(b,c),a), 0 ).
W punkcie 1 nie wolno korzystać z predykatów wbudowanych oraz z odcięcia.
W punkcie 2 można korzystać z predykatu is, oraz z konstrukcji
warunkowej ( -> ; ) i z negacji.