====== 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)
[]