Search
Jednotlivé funkce (včetně případných podpůrných) pište do jednoho souboru pojmenovaného {login}.py a nahrajte do BRUTE (ZK).
1. [6 bodů] Napište funkci, která vykreslí ASCII artový objekt - lodičku. Funkce má tří parametry:
Paluba je vždy libovolně delší, než plachta, výška lodičky odpovídá čtvrtině celkové délky spodní hrany plachty (celočíselně).
Příklad:
def priklad1 (sirka, znak, vyplnit = True) # vase implementace pass priklad1 (10, '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 XXXXXXXXXXXXXXXXXXXXX priklad1 (9, 'O', False) O O OO OO OOO OOO OOOO OOOO OOOOO OOOOO OOOOOO OOOOOO OOOOOOO OOOOOOO OOOOOOOO OOOOOOOO OOOOOOOOO OOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOO O O O O OOOOOOOOOOOOOOOOOOOOOO
2. [8 bodů] 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).
^
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. [6 bodů] Napište funkci, který provede kódování pomocí Vigenèrovy šifry. Šifrování probíhá posunem písmen podobně jako u Caesarovy šifry s tím rozdílem, že Vigenèrova šifra využívá klíč. Pro posun písmen zdrojového textu se postupně používají písmena z klíče: a posouvá o 0, b o 1, … z o 25. Pokud je klíč kratší než zdrojový text, jsou použita písmena z klíče opět od začátku. Znaky zdrojového textu jsou z množiny A-Za-z, klíč je pouze z malých písmen. Návratovou hodnotou funkce je tuple - prvním členem je logická hodnota True, pokud nedošlo k chybě nebo False při nesprávně zadaných argumentech funkce, druhým členem je hodnota None nebo zakódovaný řetězec.
def priklad3 (text, klic): # vase implementace pass # priklad volani ret = funkce3 ('PAMPELISKA', 'klic') # overeni vysledku print (ret) # (True, "ZLUROWQUUL")