Osmé cvičení IB111 Petr Matula ================== Cíle cvičení - prakticky vyzkoušet různé datové struktury Úkoly ===== Zásobník -------- 1. Napište funkci parenthesis_check(expr), která pro zadaný řetězec složený pouze ze závorek [](){} ověří, zda jde o korektní uzávorkování. parenthesis_check('([]({()}))[]{[()]}') -> True parenthesis_check('([)]') -> False 2. Napište funkci postfix_evaluation(expr), která vyhodnotí zadaný výraz v postfixové notaci. Implementuje operace +, -, / a * v plovoucí čárce. S výhodou můžete použít metodu split použitelnou na řetězcích ("a b c".split()). postfix_evaluation('8 7 * 6 5 + 2 * +') -> 78.0 postfix_evaluation('5 7 * 3 - 5 /') -> 6.4 Seznam seznamů -------------- 3. Napište funkci print_matrix(matrix), která vytiskne na obrazovku matici čísel reprezentovanou jako seznam seznamů. print_matrix([[1, 2, 3], [1, 9, 0], [1, 6, 8]]) 1 2 3 1 9 0 1 6 8 4. Napište funkci set_submatrix(matrix, x1, y1, x2, y2, val), která nastaví hodnoty prvků v podmatici dané rozsahem x1, y1, x2, y2 v matici matrix na zadanou hodnotu val. Matici reprezentujte jako seznam seznamů. m = [[0 for _ in range(10)] for _ in range(8)] print_matrix(m) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 set_submatrix(m, 1, 3, 4, 6, 9) print_matrix(m) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 9 9 9 0 0 0 0 9 9 9 9 0 0 0 0 9 9 9 9 0 0 0 0 9 9 9 9 0 0 0 0 0 0 0 0 0 0 0 set_submatrix(m, 4, 5, 20, 30, 4) print_matrix(m) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 9 9 9 0 0 0 0 9 9 9 9 0 0 0 0 9 9 9 4 4 4 4 0 9 9 9 4 4 4 4 0 0 0 0 4 4 4 4 Slovník ------- 5. Napište funkci freq_chars(text), která s použitím datové struktury slovník vypíše tři nejčastěji se opakující písmena (nezáleží na velikosti, seřazená sestupně primárně podle četnosti výskytů a sekundárně alfabeticky) v zadaném řetězci. freq_chars('Monty Python and Monty Python all over here.') -> 'NOT'