Warning
This page is located in archive.

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

courses/bab37zpr/zkouska/02.txt · Last modified: 2025/02/10 08:37 by viteks