Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verze | |||
| pitel:izu:uloha2 [02. 04. 2013, 08.56:25] – file pitel | pitel:izu:uloha2 [30. 12. 2022, 13.43:01] (aktuální) – upraveno mimo DokuWiki 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| + | ====== Úkol 2 ====== | ||
| + | <file prolog rodina.pl> | ||
| + | muz(iluvatar). | ||
| + | muz(elros). | ||
| + | muz(elrond). | ||
| + | muz(john). | ||
| + | muz(paul). | ||
| + | muz(george). | ||
| + | muz(ringo). | ||
| + | zena(clare). | ||
| + | zena(lucy). | ||
| + | zena(mary). | ||
| + | zena(jane). | ||
| + | zena(linda). | ||
| + | |||
| + | otec(iluvatar, | ||
| + | otec(iluvatar, | ||
| + | otec(elros, | ||
| + | otec(elros, | ||
| + | otec(elrond, | ||
| + | otec(elrond, | ||
| + | otec(paul, | ||
| + | otec(george, | ||
| + | otec(john, | ||
| + | otec(john, | ||
| + | |||
| + | matka(clare, | ||
| + | matka(lucy, | ||
| + | matka(linda, | ||
| + | matka(mary, | ||
| + | |||
| + | |||
| + | rodic(X,Y) :- otec(X,Y). | ||
| + | rodic(X,Y) :- matka(X,Y). | ||
| + | |||
| + | je_matka(X) :- matka(X,_). | ||
| + | |||
| + | %tyto pravidla doplnte | ||
| + | sourozenec(X, | ||
| + | teta(X,Y) :- sestra(X , R), rodic(R, Y). | ||
| + | sestra(X,Y) :- zena(X), sourozenec(X, | ||
| + | deda(X,Y) :- muz(X), rodic(R, Y), rodic(X, R). | ||
| + | </ | ||
| + | <file prolog seznamy.pl> | ||
| + | %delka linearniho seznamu | ||
| + | delka([], | ||
| + | delka([_|T], | ||
| + | |||
| + | %je prvek clenem lin. seznamu? | ||
| + | jePrvek([X|_], | ||
| + | jePrvek([_|T], | ||
| + | |||
| + | %spojeni dvou linearnich seznamu | ||
| + | spoj([], | ||
| + | spoj([H|T], | ||
| + | |||
| + | |||
| + | |||
| + | %doplnte nasledujici predikaty | ||
| + | |||
| + | %doplnte nasledujici predikaty | ||
| + | |||
| + | max(A, B, MAX) :- A>=B, MAX is A. | ||
| + | max(A, B, MAX) :- A<B, MAX is B. | ||
| + | |||
| + | %otoceni linearniho seznamu | ||
| + | %otoc(seznam, | ||
| + | otoc([], []). | ||
| + | otoc([H|T], L) :- otoc(T, ZBYTEK), spoj(ZBYTEK, | ||
| + | |||
| + | %je prvek clenem obecneho seznamu? | ||
| + | %jePrvekOb(prvek, | ||
| + | jePrvekOb(X, | ||
| + | jePrvekOb(X, | ||
| + | jePrvekOb(X, | ||
| + | |||
| + | %delka obecneho seznamu | ||
| + | %delkaOb(seznam, | ||
| + | delkaOb([], 0). %Delka prazdneho seznamu je 0 | ||
| + | delkaOb([H|T], | ||
| + | delkaOb(_, 1). %Delka jednoho prvku je 1 | ||
| + | |||
| + | %nalezeni maxima v obecnem seznamu prvku typu integer | ||
| + | %maximumOb(seznam, | ||
| + | maximumOb(SEZNAM, | ||
| + | |||
| + | maximumOb_max([], | ||
| + | maximumOb_max([H|T], | ||
| + | maximumOb_max([H|T], | ||
| + | |||
| + | %hloubka zanoreni obecneho seznamu | ||
| + | %hloubkaOb(seznam, | ||
| + | |||
| + | hloubkaOb(SEZNAM, | ||
| + | hloubkaOb_max([], | ||
| + | hloubkaOb_max([H|T], | ||
| + | hloubkaOb_max([H|T], | ||
| + | </ | ||