## cvičení 13
## Zkušební test
# autor: JMÉNO PŘIJMENÍ
# časová dotace - 45 minut


# UKOL 01
# Napište funkci <most_frequent_chars>, která ze zadaného textu vybere
# <n> nejčastěji zastoupených znaků.
def most_frequent_chars(text, n):
    pass


# ÚKOL 02
# Napište funkci string_zip(text1, text2), která vezme dva řetězce <text1> a <text2>
# a vrátí jejich zazipovanou podobu (písmena z obou řetězců na střídačku).
def string_zip(text1, text2):
    pass


# ÚKOL 03
# napište funkci, která vrátí index sloupce matice, který má nejmenší součet.
# Matice obsahuje kladná celá čísla a je typu List[List[int]] a je uložena po
# řádcích.
def cheapest_column(matrix):
    pass


def test_most_frequent_chars():
    assert set(most_frequent_chars('Ahoj Ostravo!', 2))\
        .issubset({'o', 'a'})
    assert set(most_frequent_chars('Moje nejmilejší kočka Míca pije ráda smetanu.', 3))\
        .issubset({'m', 'j', 'e', ' ', 'a'})


def test_string_zip():
    assert string_zip('', 'nic tu není..') == 'nic tu není..'
    assert string_zip('..tady taky nic.', '') == '..tady taky nic.'
    assert string_zip('taaaaaaaa', 'rllll') == 'tralalalalaaaa'
    assert string_zip('Božena', 'Němcová') == 'BNoěžmecnoavá'
    assert string_zip('Petr Čtvrtníček', 'David Vávra') == 'PDeatvri dČ tVvárvtrnaíček'


def test_cheapest_column():
    a = [[1, 2, 3, 4],
         [5, 6, 7, 8],
         [9, 9, 1, 2]]
    b = [[2, 1, 1],
         [1, 1, 1]]
    c = [[100]]
    d = [[6, 1, 9, 0, 1, 0, 4, 5],
         [8, 5, 0, 3, 8, 6, 5, 7],
         [4, 4, 0, 5, 4, 4, 9, 4],
         [1, 7, 3, 2, 1, 8, 6, 0],
         [0, 9, 4, 3, 1, 7, 8, 9],
         [6, 5, 8, 5, 9, 3, 2, 6]]
    assert cheapest_column(a) == 2
    assert cheapest_column(b) == 1
    assert cheapest_column(c) == 0
    assert cheapest_column(d) == 3


if __name__ == "__main__":
    # zde můžete volat implementované funkce a zkusit si, jak fungují
    # test_most_frequent_chars()
    # test_string_zip()
    # test_cheapest_column()
    pass
