Uživatelské nástroje

Nástroje pro tento web


pitel:izu:uloha2

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revizePředchozí verze
pitel:izu:uloha2 [02. 04. 2013, 08.56:25] – file pitelpitel: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,elrond).
 +otec(iluvatar,elros).
 +otec(elros,clare).
 +otec(elros,lucy).
 +otec(elrond,paul).
 +otec(elrond,george).
 +otec(paul,john).
 +otec(george,mary).
 +otec(john,ringo).
 +otec(john,jane).
 +
 +matka(clare,john).
 +matka(lucy,mary).
 +matka(linda,ringo).
 +matka(mary,jane).
 +
 +
 +rodic(X,Y) :- otec(X,Y).
 +rodic(X,Y) :- matka(X,Y).
 +
 +je_matka(X) :- matka(X,_).
 +
 +%tyto pravidla doplnte
 +sourozenec(X,Y) :- rodic(R, X), rodic(R, Y), X \== Y.
 +teta(X,Y) :- sestra(X , R), rodic(R, Y).
 +sestra(X,Y) :- zena(X), sourozenec(X, Y).
 +deda(X,Y) :- muz(X), rodic(R, Y), rodic(X, R).
 +</file>
 +<file prolog seznamy.pl>
 +%delka linearniho seznamu
 +delka([],0).
 +delka([_|T],S) :- delka(T,SS), S is SS + 1.
 +
 +%je prvek clenem lin. seznamu?
 +jePrvek([X|_],X).
 +jePrvek([_|T],X) :- jePrvek(T,X).
 +
 +%spojeni dvou linearnich seznamu
 +spoj([],L,L).
 +spoj([H|T],L,[H|TT]) :- spoj(T,L,TT).
 +
 +
 +
 +%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,seznam)
 +otoc([], []).
 +otoc([H|T], L) :- otoc(T, ZBYTEK), spoj(ZBYTEK, [H], L). %Pozirej hlavicky a ty pak spoj obracene
 +
 +%je prvek clenem obecneho seznamu?
 +%jePrvekOb(prvek,seznam)
 +jePrvekOb(X, [X|_]). %Kdyz je prvek na zacatku seznamu, je urcite prvkem seznamu
 +jePrvekOb(X, [H|_]) :- jePrvekOb(X, H). %Zanor se do hlavicky
 +jePrvekOb(X, [_|T]) :- jePrvekOb(X, T). %Zanor se do zbytku
 +
 +%delka obecneho seznamu
 +%delkaOb(seznam,pocet)
 +delkaOb([], 0). %Delka prazdneho seznamu je 0
 +delkaOb([H|T], L) :- delkaOb(H, LH), delkaOb(T, LT), L is LH + LT. %Zanor se a secti delky
 +delkaOb(_, 1). %Delka jednoho prvku je 1
 +
 +%nalezeni maxima v obecnem seznamu prvku typu integer
 +%maximumOb(seznam,maximum)
 +maximumOb(SEZNAM, MAX) :- maximumOb_max(SEZNAM, -9999999999999999999999999, MAX). %Zanor se
 +
 +maximumOb_max([], MAX_AKT, MAX) :- MAX is MAX_AKT. %Kdyz uz dolezu do prazdnyho senamu, bude to maximum
 +maximumOb_max([H|T], MAX_AKT, MAX) :- integer(H), maximumOb_max(T, H, MAX_NEW), max(MAX_AKT, MAX_NEW, MAX). %Zkontroluje integer, pokud je hlavicka vetsi nez aktualni maximum zanori se (viz. minuly predikat)
 +maximumOb_max([H|T], MAX_AKT, MAX) :- maximumOb_max(H, MAX_AKT, MAX_HT), maximumOb_max(T, MAX_HT, MAX). %Rekurze
 +
 +%hloubka zanoreni obecneho seznamu
 +%hloubkaOb(seznam, hloubka)
 +
 +hloubkaOb(SEZNAM, HLOUBKA) :- hloubkaOb_max(SEZNAM, 1, HLOUBKA). %Zavola telo, hloubka prazdneho senznamu je 1
 +hloubkaOb_max([], HLOUBKA_AKT, HLOUBKA) :- HLOUBKA is HLOUBKA_AKT. %Uz jsem nejhloubs
 +hloubkaOb_max([H|T], HLOUBKA_AKT, HLOUBKA) :- atomic(H), hloubkaOb_max(T, HLOUBKA_AKT, HLOUBKA). %Zanoreni
 +hloubkaOb_max([H|T], HLOUBKA_AKT, HLOUBKA) :- hloubkaOb_max(H, HLOUBKA_AKT+1, HLOUBKA_H), hloubkaOb_max(T, HLOUBKA_AKT, HLOUBKA_T), max(HLOUBKA_H, HLOUBKA_T, HLOUBKA). %Zanor se do hlavicky (+1), zanor se do zbytku, over ze jsme dost hluboko
 +</file>
/var/www/wiki/data/attic/pitel/izu/uloha2.1364892985.txt.bz2 · Poslední úprava: 30. 12. 2022, 13.43:01 (upraveno mimo DokuWiki)