PROLOG:
Máte k dispozici predikát modry/1, který uspěje, pokud argument je modry. Sestavte prodikát na5tiny(+Seznam,-Seznam5tin), který rozdělí efektivním způsobem vstupní seznam na 5 seznamů obsahujících přibližně stejně modrých prvků. Výstupní parametr Seznam5in obsahuje právě 5 prvků. Jsou to seznamy, jejichž zřetězením by vznikl seznam Seznam a počty modrých prvků v libovolných dvou prvcích seznamu Seznam5in se liší nejvýše o 1.
Při konstrukci predikátu nesmíte používat žádnou aritmetiku (ani predikát length)Sestavte proceduru-y, pro kódování a dekódování (dlouhého) seznamu pomocí šifry "Monte Christo".
Text se zakóduje do čtvercové matice 4x4. Kódovacím klíčem je čtvercová mřížka stejných rozměrů s vhodně vyřezanými otvory. Text se vypisuje do otvorů ve mřížce postupně po řádcích, vždy do každého otvoru jedno písmeno. Pak se mřížka otočí o 90° doprava a další text es opět vypisuje do otvorů. Toto se opakuje celkem čtyřikrát. Po zaplnění celé matice se mřížka odstraní a obsah matice se vypíše po řádcích na výstup. Je-li šifrovaná zpráva delší než jeden čtverec (tj. delší než 4x4 písmen), rozdělí se na více úseků, každý o délce jednoho čtverce. Napište kódovací a dekódovací proceduru, musíte otestovat, zda je mřížka přípustná.
HASKELL
3) Definujte přirozenou reprezentaci binárního stromu, v jehož uzlech je uložena informace nějakého typu (podtřídy Eq). Každý stakový strom T určuje relaci mezi prvky onoho typu: A ~ B, jestliže ve stromě T existují uzly a(v němž je uložena informace A) a b (v němž je uložena informace B) takové, že uzel a leží ve stromě T nad uzlem b.
Sestavte funkci, která pro dva stromy rozohdne o tom, zda reprezentují stejnou relaci.
4) Definujte typ vhodný k reprezentaci multimnožiny desítkových cifer (každá z cifer se v ní může vyskytovat vícekrát). Uvažme čísla, která lze sestavit z cifer takové multimnožiny (nemusíme použít všechny). Naprogramujte dvě funkce:
a) první, která nalezne k číslu N a multimnožině M N-té takové číslo
b) druhou "inverzní", která k takovému číslu X spočítá jeho pořadové číslo
Na vypracování jako obvykle 3 hodiny času.