Prolog
Kód: Vybrat vše
1) Najděte hladovým algoritmem v daném neorientovaném grafu co největší kliku (nemusí být ze všech možných klik největší, ale nesmí jít zvětšit zahrnutím dalšího vrcholu).
2) Upravte daný orientovaný graf odebráním určitých hran tak, aby neobsahoval žádný orientovaný trojúhelník A->B, A->C, B->C. Hranu A->B přitom smíte odebrat jedině tehdy, pokud je součástí takového trojúhelníku (čili existuje C tak, že A->C a B->C).
Kód: Vybrat vše
3) Je daná multimnožina (množina, ve které se mohou prvky opakovat) kladných čísel. Zjistěte, lze-li tuto multimnožinu rozdělit na dvě části (podmnožina a její doplněk) tak, aby obě tyto části měly stejný součet prvků. Pokud ano, vydejde libovolné takové rozdělení.
4) Je dán seznam dvojic čísel U a seznam čísel S. Vydejte seznam všech permutací seznamu S takových, že pro každou dvojici (x, y) z U platí, že prvek x je v permutaci před prvkem y.
Kód: Vybrat vše
5) Vysvětlete deklaraci typových tříd a jejich instancí (Haskell).
Kód: Vybrat vše
Převod výrazu na hradlovou síť.
Hradlová síť je seznam hradel, kde každé hradlo má své jméno, druh a seznam vstupů, přičemž vstupem může být jméno jiného hradla (čili jeho výstup), konstanta nebo proměnná. Síť je acyklická (vstup žádného hradla nijak nezávisí na jeho výstupu).
Vstupem programu je aritmetický výraz coby prologovský term (čili už znáte jeho rozparsovanou strukturu). Tento výraz obsahuje binární operátory +, -, *, /, funkce sin a cos, proměnné (= atomy) a konstanty (= čísla).
Výstupem je hradlová síť tohoto výrazu. K dispozici jsou hradla druhu +, -, *, /, sin a cos. Navíc hradla typu + a * mohou mít více jak dva vstupy a mezi nimi nesmí být výstup jiného hradla stejného druhu.