# Skúška 07.06.2012

<{ForumPost(poster="Shigi", timestamp=2012-06-08 16:28:26)}>
Ahojte,  
  
tento termín bol (asi výnimočne) vypísaný p. Hricom, ktorý aj skúšal a znenie úloh bolo približne takéto:  
  
**Prolog**  

1. 
Na vstupe sú dané dve čísla *D* a *H* a s nimi aj binárny vyhľadávací strom v tvare *t(LavyPodstrom,Hodnota,PravyPodstrom)*, resp. *void* pre uzly.  
Úlohou bolo implementovať predikát *orez(D,H,BVS,OrezanyBVS)*, kde nový strom bude obsahovať len také uzly, pre ktoré platí, že ich hodnoty *X* spadajú do intervalu medzi *D* a *H*, t.j.  *D <= X* a *X <= H*.  
  
Príklad:  
*?- orez(10,20,t( t(  t( void, 3, void  ), 5, void ), 10, t(  void, 18, t(  void, 25, void )  ) ), OrezanyBVS).*  
*OrezanyBVS = t(void, 10, t(void, 18, void))*
1.  Je daný zoznam vektorov a úloha bola vybrať tie vektory, ktoré nie sú dominované žiadným iným vektorom.  
Vektor *u* je dominovaný vektorom *v*, ak všetky zložky vektoru *v* sú väčšie alebo rovné než príslušné zložky vektoru *u*.  
Predikát sa volal *paretoMax(+ZoznamVektorov,-NedominovaneVektory)*.  
  
Príklad:  
*?- paretoMax(\[ \[0,0,3], \[1,1,2], \[1,1,1] ], V).*  
*V = \[ \[0,0,3], \[1,1,2] ]*

**Haskell**  

1. Na vstupe máme zoznam hodnôt vrcholov binárneho vyhľ. stromu v poradí preorder.   
Úloha je zrekonštruovať bin. vyhľ. strom z tohto zoznamu.  
  
Príklad:  
*readBVS \[10,5,3,20,15,25]*  
*Node (Node (Node Void 3 Void) 5 Void) 10 (Node (Node Void 15 Void) 20 (Node Void 25 Void))*
1. Mali sme zadaný graf (orientovaný, bez smyčiek, bez izolovaných bodov a ešte niečo..)  ako zoznam hrán s ohodnoteniami a bolo ho treba previesť na zoznam vrcholov, kde ku každému vrcholu prislúchal zoznam susedov s ohodnotením.  
Deklarácia mohla vyzerať takto:  
*hr2sous :: (Eq a) => (Num b) => \[(a,a,b)] -> \[(a,\[(a,b)])]*  
  
Príklad:  
*hr2sous \[ ('a','b','1'), ('b','a',2), ('b','c',3), ('c','d',4) ]*  
*\[ ('a', \[('b',1)]), ('b', \[('a',2), ('c',3)]), ('c', \[('d',4)]) ]*

  
**Hodnotenie**  
  
Za každý príklad sme mohli získať 5 bodov, pričom podmienka na postup do ústnej časti bola 12 bodov a za každý jazyk sme museli získať minimálne 5 bodov.
<{/ForumPost}>

