# Zk 13.3.

<{ForumPost(poster="Isidor", timestamp=2006-03-13 14:58:44)}>
Prolog:  
  
1. dany zoznam cisel, vytvorte z neho zoznam trojic \[x, najmensie cislo pred x, najvacsie cislo za x] (pre prve a posledne cislo sme si mohli dodefinovat)  
  
2. dany n-arny strom a cislo k, vytvorte zoznam listov, do ktorych sa da dostat z korena tak, aby sucet poradi synov (lokalne od 0) na ceste bol k (kto to z tohto pochopi, ma u mna pivo :lol:)  
  
Haskell:  
  
3. type Poloha a = Top a | Bottom a | Other a  
- Nadefinujte bin. strom Tree a s hodnotami vo vnutornych uzloch  
- napiste funkciu pruchod :: (Tree a -> Bool) -> Tree a -> \[Poloha( Tree a )], ktora pre dany strom vrati zoznam jeho podstromov, ktore splnuju podmienku (Tree a -> Bool) a budu oznacene Top, ak nie su podstromom ineho podstromu v zozname, Bottom ak nemaju taky podstrom a Other inak.  
  
4. Dany orientovany graf, vytvorte zoznam dvojic vrcholov, ktore medzi sebou nemaju cestu ani v jednom smere (alebo tak nejak...)  
  
Velky:  
  
Disk ma rozsah \[0..a], dane je cislo p (vo vyzname percent) a zoznam dvojic (i,j), kde kazdy diskovy blok od i po j je volny, zvysny priestor na disku je obsadeny. Vytvorte ("efektivne") zoznam vsetkych suvislych oblasti na disku, ktore sa skladaju z celych blokov (volnych a/alebo obsadenych), obsahuju viac ako p percent volnych miest (vzhladom k svojej velkosti, nie celeho disku) a nedaju sa rozsirit o susedny blok tak, aby ostali zachovane podmienky.
<{/ForumPost}>

<{ForumPost(poster="LuKu", timestamp=2006-03-13 15:31:32)}>
Moh byste nekdo nastinit reseni toho velkeho prikladu? Ja ho bohuzel na zkousce nezdolala:-(
<{/ForumPost}>

<{ForumPost(poster="gofry", timestamp=2006-03-13 16:28:15)}>
Ak to este niekto stihne, tak sem skuste napisat riesenie 4. prikladu, najlepsie do 17:05, ked treba ist na ustnu ;)
<{/ForumPost}>

<{ForumPost(poster="jaruch", timestamp=2006-03-13 18:22:32)}>
no Izi, dik za pivo...  :D   
ten priklad som mal na skuske a Hric mal namietky len voci efektivite...
<{/ForumPost}>

<{ForumPost(poster="Isidor", timestamp=2006-03-13 20:06:32)}>

 > LuKu wrote:Moh byste nekdo nastinit reseni toho velkeho prikladu? Ja ho bohuzel na zkousce nezdolala:-(

No, tak ja som tam mal dve rekurzie, jedna postupne vyberala zaciatky volnych usekov a druha konce; ak zvolena oblast vyhovovala podmienke a nedala sa rozsirit, pridala sa do zoznamu... plus tam boli take finticky ako pridat si na zaciatok a na koniec volny blok o dlzke 0 (tzn. (0,0) a (a,a)), aby to behalo poriadne. Hric mi k tomu vytkol, ze niektore useky mi to vrati, aj ked sa daju rozsirit (dolava!), takze by bolo dobre spravit nejaky postprocessing, kde by sa toto checkovalo a prip. vyhadzovalo...
<{/ForumPost}>

