====== Zkouška 10.02.2025 ====== Jednotlivé funkce (včetně případných podpůrných) pište do jednoho souboru pojmenovaného ''{login}.py'' a nahrajte do BRUTE (ZK). ''{login}'' nahraďte vaším přihlašovacím jménem (bez složených závorek). Dodržujte pojmenování funkcí, aby se zjednodušilo vyhodnocení. Pro práci můžete použít vlastní počítač. Pokud na lokálním PC není dostupný vhodný editor, můžete využít např. online [[https://jupyter.org/try|JupyterLab]]. Pokud v učebnách nelze spustit Visual Studio Code z plochy, je třeba ho najít na disku (C:\Program Files\...). Odevzdávaný program nemusí být zcela funkční, je možné ohodnotit i jeho dílčí části. ===== 1. příklad ===== **Bodové hodnocení:** 6 bodů **Zadání:** Napište funkci, která vykreslí ASCII artový objekt - lodičku. Funkce má dva argumenty: znak, kterým je kreslena a příznak, zda je dolní část vyplněna. **Ukázka:** def priklad1 (znak, vyplnit = True) # vase implementace pass priklad1 ('X') X X XX XX XXX XXX XXXX XXXX XXXXX XXXXX XXXXXX XXXXXX XXXXXXX XXXXXXX XXXXXXXX XXXXXXXX XXXXXXXXX XXXXXXXXX XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX priklad1 ('O', False) O O OO OO OOO OOO OOOO OOOO OOOOO OOOOO OOOOOO OOOOOO OOOOOOO OOOOOOO OOOOOOOO OOOOOOOO OOOOOOOOO OOOOOOOOO OOOOOOOOOO OOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOO O O O O OOOOOOOOOOOOOOOOOOOOOOO ===== 2. příklad ===== **Bodové hodnocení:** 8 bodů **Zadání:** Napište funkci, která provede [[https://cs.wikipedia.org/wiki/Burrowsova%E2%80%93Wheelerova_transformace|Burrowsovu–Wheelerovu transformaci]]. Princip transformace spočívá v tom, že se provedou všechny možné rotace zadaného textu (včetně ukončovacího znaku) a tyto dílčí rotace se lexikograficky seřadí. Výstupem tranformace je pak řada posledních písmen jednotlivých rotací. Funkce ověří, že na vstupu je textový řetězec ukončený znakem ''^'' - pokud tomu tak není, vhodným způsobem ukončí činnost (např. výjimka). **Ukázka:** def priklad2 (text) # vase implementace pass priklad2 ('BANANA^') rotace: BANANA^ ^BANANA A^BANAN NA^BANA ANA^BAN NANA^BA ANANA^B serazeno: ANANA^B ANA^BAN A^BANAN BANANA^ NANA^BA NA^BANA ^BANANA vysledek: BNN^AAA ===== 3. příklad ===== **Bodové hodnocení:** 6 bodů Zadání: Napište funkci, který která provede seskupení hodnot ze seznamu, který je argumentem funkce. Skupiny stejných prvků pak tvoří nové seznamy v rámci jednoho seznamu. Argumentem funkce je seznam nenulové délky, ověřte na vstupu, v případě nesplění ohlašte chybu a návratovou hodnotou je prázdný seznam. Seznam na vstupu může obsahovat hodnoty libovolných datových typů. **Ukázka:** def priklad3 (data): pass # priklad volani ret = priklad3 ([1, 2, 1, 3, 5, 1, 6, 9, 7, 10, 5, 6]) # overeni vysledku print(ret) [[1, 1, 1], [2], [3], [5, 5], [6, 6], [7], [9], [10]] ret = priklad3 (10) ERROR print(ret) []