##### IB111 skupina 10 #####
##### cvičení 05


### ŘETĚZCE
# UKOL 1
# Párově programujte příklady z cvičebnice v - kapitola 5.2 Řetězce.
# vyřešené příklady zaznamenávejte na tabuli


### ŠIFRY
# ÚKOL 2
# Napište funkci, která zašifruje text podle předem daného klíče. 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.

>>> print(vigenere('pampeliska', 'klic'))
ZLUROWQUUL


### SEZNAMY

# ÚKOL 3
Napište funkci, která vypočítá součin čísel v seznamu, ale ignoruje přitom případné nuly.

print(nonzero_product([0, 2, 3, 0, 0, 3]))    # 18
print(nonzero_product([0, 0, 0, 0]))          # 1

# ÚKOL 4
Napište funkci double_all, která dostane na vstupu seznam čísel a každý jeho prvek
vynásobí dvěma. Dále napište funkci create_doubled, která dostane na vstupu seznam
čísel a vrátí nový seznam získaný ze vstupního tak, že každý prvek vynásobí dvěma.
Na rozdíl od předchozí funkce však nemění předaný seznam.

>>> a = [1, 4, 2, 5]
>>> double_all(a)
>>> print(a)
[2, 8, 4, 10]

>>> a = [1, 4, 2, 5]
>>> b = create_doubled(a)
>>> print(a)
[1, 4, 2, 5]
>>> print(b)
[2, 8, 4, 10]


# ÚKOL 4
Napište funkci, jejímž vstupem je seznam seznamů a výstupem je seznam, který obsahuje prvky všech jednotlivých seznamů.

>>> print(flatten([[0, 2, 3], [1, 2, 3], [9, 10]]))
[0, 2, 3, 1, 2, 3, 9, 10]


# ÚKOL 5
Napište funkci, která spočítá součet všech prvočísel menších než parametr size. Použijte k tomu Eratostenovo síto.


# ÚKOL 6
Napište obecnou funkci pro převod mezi libovolnými číselnými soustavami. Uvažujte pouze soustavy v rozsahu 2 - 36. 


