====== Zkouška 12.01.2021 ====== Jednotlivé funkce pište do jednoho souboru pojmenovaného {login}.py a nahrajte do BRUTE (ZK1). ---- 1. Napište funkci, jejímž argumentem je matice celých čísel obecné velikosti. Návratovou hodnotou funkce je seznam, ve kterém jsou prvky z původní matice vybrané jako spirála ve směru hodinových ručiček (viz příklad). **Příklad:** def priklad1 (matice): # vase implementace pass # volani matice ret = priklad1([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]) print (ret) # vytiskne nasledujici: # [1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10 Hodnocení: 8 bodů ---- 2. Napište funkci, která spočítá rozdíl ve dnech mezi dvěma daty v rámci jednoho nepřestupného roku. Data jsou zadána ve formě textových řetězců ve formátu ''YYYYMMDD'', pořadí argumentů je libovolné. Návratová hodnota je tuple, jehož první položka je je kladné číslo reprezentující rozdíl vstupních letopočtů. Druhá hodnota je ''True'' v případě, že nedošlo k žádné chybě a ''False'' v případě nesprávného formátu vstupních data. **Příklad:** def priklad2 (datum1, datum2): # vase implementace pass # priklad volani ret = priklad2 ('20210101', '20210110') print(ret) # vytiskne nasledujici: # (9, True) Hodnocení: 8 bodů ---- 3. Napište funkci pro převod čísla v rozsahu 1 - 1999 reprezentovaného římskými číslicemi do vyjádření v arabských číslicích. **Příklad:** def priklad3 (riman): # vase implementace pass # priklad volani ret = priklad3 ('MDIV') print (ret) # vytiskne nasledujici: # 1504 Hodnocení: 8 bodů ---- 4. 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. **Příklad:** def priklad4 (text, klic): # vase implementace pass # priklad volani ret = priklad4 ('pampeliska', 'klic') print (ret) # vytiskne nasledujici: # ZLUROWQUUL Hodnocení: 8 bodů ---- 5. Napište funkci pro kapitalizaci všech slov v textovém řetězci. **Příklad:** def priklad5 (text): # vase implementace pass # priklad volani ret = priklad5 ('jenom tak klidne levituji ve vzduchu') print (ret) # vytiskne nasledujici: # Jenom Tak Klidne Levituji Ve Vzduchu Hodnocení: 4 body ---- 6. Napište funkci, jejímž argumentem bude seznam čísel. V seznamu čísel nalezněte minimální a maximální hodnotu, vyřaďte je ze seznamu a vypočítejte ar. půměr. **Příklad:** def priklad6 (data): # vase implementace pass # priklad volani ret = priklad6 ([10, 4, 2, 3, 5, 6, 2, 1]) print (ret) # vytiskne nasledujici (na presnosti nezalezi): # 3.666667 Hodnocení: 4 body ----