Cvičení 13.12.2010

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.

Příklady

Vztahy

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).

Databaze

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).

Aritmetika

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.

Hledání cesty v grafu a seznamy

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).

vsb/ml/cviceni_2010_2011/12.txt · Last modified: 06.03.2014 11:00 (external edit)
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki