# Kryl 28.5.2013

<{ForumPost(poster="LordG", timestamp=2013-05-28 17:29:12)}>
První část  
------------  
HASKELL  
1) Řídká matice, reprezentovaná jako (m, n, s), kde:  
m = počet řádek  
n = počet sloupců  
s = seznam trojic (i,j,a<sub>i,j</sub>), kde i,j je klasický index v matici a a<sub>i,j</sub> je nenulová hodnota.  
  
Úkol: naprogramovat transpozici a násobení takto reprezentovaných matic.  
  
2) Definovat přirozenou reprezentaci binárního stromu, v jehož uzlech je uložen typ třídy Ord, a naprogramovat fci, která z BVS této reprezentace vypustí uzly, jejichž hodnoty nepatří do zadaného intervalu.  
  
PROLOG  
3) Permutace je zadaná jako c(Cislo, Cykly), kde Cislo je počet permutovaných čísel a cykly je seznam cyklů permutace s tím, že prvky, které permutace zobrazí na ně samotné, tam nejsou. Naprogramovat složení takto reprezentovaných permutací tak, aby výsledná reprezentace byla také taková.  
  
4) Sestavit predikát taut(Formule), který ověří, jestli formule je tautologií.  
K tomu navíc definovat unární operátor ~ pro negaci a binární &, # pro konjunkci a disjunkci. Formule je potom zadaná pomocí těchto operátorů a atomů (klasika, zapsané malými písmeny, např ~a#b&a.  
  
DRUHÁ ČÁST  
---------------  
Máme dětskou tiskárnu. V té je daný počet nul, jedniček, ..., devítek. Úkoly:  
1) Napsat fci, která zjistí, jestli lze číslo N složit.  
2) Napsat fci, která k zadanému N spočítá - pokud ho lze reprezentovat - jeho pořadí podle velikosti mezi reprezentovanými čísly.  
3) Napsat fci, která pro dané P spočítá P-té nejvyšší reprezentovatelné číslo.  
  
Komentář: číslo N mohlo být v rozsahu Int, tzn pokud by v řešení tento fakt pomohl, bylo lze toho využít.  
Komentář 2: Já zvolil inkrementální počítání odspoda, tzn počítal jsem pořadí N od nejmenšího a P-té nejnižší reprezentovatelné číslo.... A zítra jdu na ústní, tak uvidíme.
<{/ForumPost}>

