Závěrečným tématem bude Prolog, který bude díky reorganizaci náplně kurzu možné tento semestr i vyzkoušet na cvičení. Připomínám, že Prolog bude součástí 2. zápočtové písemky.
Ja jsem posílal, měli bychom použít LPA Prolog, který se nějak na škole oficiálně používá. Pro cvičení bude ale dostačující tuProlog, který je napsaný v Javě a tedy ho stačí jenom stáhnout a spustit.
otec(cyril, adam).
matka(adam, bozena).
rodic(X, Y) :- matka(X, Y).
rodic(X, Y) :- otec(X, Y).
zena(X) :- matka(_, X).
muz(X) :- otec(_, X).
babicka(X, Y) :- matka(Z, Y), rodic(X, Z).
zna(jakub, tomas).
zna(tomas, jakub).
zna(tomas, becherovka).
clovek(jakub).
clovek(tomas).
db_clovek(jakub, 2004, til).
db_clovek(tomas, 2010, ml).
db_clovek(honza, 2010, sp).
db_clovek(jan, 2007, ml).
db_clovek(petr, 1908, sp).
oblibeny_predmet(X, Y) :- db_clovek(X, _, Y).
clovek(X) :- db_clovek(X, _, _).
doba_na_skole(X, Y) :- db_clovek(X, Z, _), Y is 2010 - Z.
dele_na_skole_nez(X, Y) :- doba_na_skole(X, Z), Z > Y.
oblibeny_predmet_2010(X) :- db_clovek(_, 2010, X).
soucet_2(X, Y, Z) :- Z is X + Y.
soucet_n(0, 0).
soucet_n(X, Y) :- X > 0, Z is X - 1, soucet_n(Z, V), Y is V + X.
faktorial(0, 1).
faktorial(X, Y) :- X > 0, Z is X - 1, faktorial(Z, V), Y is V * X.
abs_hodnota(X, Y) :- X >= 0, Y is X.
abs_hodnota(X, Y) :- X < 0, Y is -X.
dalnice(nemecko, praha).
dalnice(praha, ostrava).
dalnice(praha, brno).
dalnice(brno, viden).
je_cesta_po_dalnici(X, Y) :- dalnice(X, Y).
je_cesta_po_dalnici(X, Z) :- dalnice(X, Y), je_cesta_po_dalnici(Y, Z).
cesta(X, X, []).
cesta(X, Y, [Z | L]) :- dalnice(X, Z), cesta(Z, Y, L).