Všechny příklady na rozmyšlenou je třeba řešit bez aritmetiky (která navíc na přednášce ještě - úmyslně- nebyla)
- Technika akumulátoru, predikát reverse_append.
- Na rozmyšlenou:
Hledání prostředního prvku ze seznamu
- Styl komentářů programů v Prologu. Význam používání +, - a ? před argumenty
- Příklady datových struktur vytvořených pomocí seznamů
- Součtové seznamy. A+B má reprezentuje zřetězení seznamu A s otočeným seznamem B.
Na rozmyšlenou:
- Přidávání prvku na začátek a na konec součtového seznamu.
- Odebírání prvku ze začátku a zkonce součtového seznamu
- Zřetězení součtových seznamů
- Otáčení součtového seznamu
- Převod(y) mezi součtovými seznamy a obvyklou reprezentací seznamů
-
Reprezentace matice jako seznamu řádkových seznamů
Na rozmyšlenou:
- seznam(+S) býti seznamem, matice(+M) býti maticí
- empty(+M) býti prázdnou maticí
- hldiag(+M,-D), vedldiag(+m,-D) hlavni a vedlejsi diagonala (predpokládáme, že vstupní matice je čtvercová
- Otočení matice o 90 stupňů
- slupka(+M,-Slupka,-Pecka) - oloupe z matice M "vnější prvky" do seznamu Slupka, zbytek matice tvoří matici Pecka
- spirála(+M,-Spirala) - loupe matici M do seznamu Spirala tak dlouho až z ní (chudáka) nic nezbude
- obdelnik(+M) ověří zda argument M je odbélníková matice
- ctverec(+M) ověří zda argument M je čtvercová matice
- další "maticové vztahy" dle libosti
- Standardní predikáty atom/1, var/1, nonvar/1.
- Rozdílové seznamy jako příklad neúplně definovaných datových struktur (reprezentace obsahuje volnou proměnnou).
Zřetězení rozdílových seznamů, Převod mezi seznamy a rozdílovými seznamy (použitý operátor řezu zatím bez podrobného výkladu
a jeho používání odložíme na později).
- Predikát rozvin(+S,-RS), který "rozvine" seznamy vložené do seznamu S
např. rozvin( [a, [b,[c,d],[e]], [], f, [[[[],g]]]] , [a,b,c,d,e,f,g] ]
a jeho další dvě implementace pomocí akumulátoru a rozdílových seznamů
- Různé definice predikátu býti předkem a jejich operační sémantika
Na rozmyšlenou:
Rozdíly v operační sémantice mezi čtyřmi procedurami procedurami implementujícími vztah předek
- Deklarativní sémantika Prologu.
- Každá deklarativně správná procedura v čistém Prologu je parciálně správná,
tj. odpověď na dotaz dát nemusí, ale dá-li ji, je tato odpověď správná.