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

DATOVÉ STRUKTURY

# ÚKOL 1
# Napište funkci evaluate_postfix(expresion: str) -> float, která dokáže spočítat příklad zadaný
# v postfixové notaci a vyhodnoťe následující výraz:

"30 9 4 8 * 2 - + 3 4 - + 3 * 5 + 2 2 - 1 6 / + - 6 5 + + -"

Ve výrazu se nachází pouze přirozená čísla a operátory '+', '-', '*' a '/'.


>>> print(evaluate_postfix("8 7 * 6 5 + 2 * +"))
78
>>> print(evaluate_postfix("6 5 -"))
1
>>> print(evaluate_postfix("15 7 1 1 + - / 3 * 2 1 1 + + -"))
5

# ÚKOL 2
# Zlatá brána je jednoduchá dětská hra, kterou hraje n dětí, které postupně procházejí bránou. Když
# se po nějakém čase dozpívá říkanka, brána někoho zavře. Ten vypadává ze hry.

# Naprogramujte tuto hru za použití fronty. Přičemž hraje n dětí, jejichž jména dostane program
# v seznamu a vypadává každý k-tý hráč. Průběh hry, vítěze a počet kol průběžně vypisujte.
# golden_gate(names: List[str], k: int) -> None

>>> golden_gate(["Bill","David","Susan","Jane","Kent","Brad","Sam"],7)


# ÚKOL 3
# Napište funkci sudoku_line_check(line: List[int]) -> bool, která zkontroluje, zda předaný
# seznam reprezentuje správný řádek vyplněného Sudoku, tj. obsahuje pouze čísla 1 až 9
# a každé z nich právě jedenkrát.

>>> print(sudoku_line_check([1, 2, 8, 9, 3, 5, 6, 7, 4]))
True
>>> print(sudoku_line_check([1, 2, 8, 9, 3, 5, 7, 4]))
False
>>> print(sudoku_line_check([1, 1, 2, 8, 9, 3, 5, 7, 4]))
False
>>> print(sudoku_line_check([0, 1, 2, 3, 4, 5, 6, 7, 8]))
False


# ÚKOL 4
# Napište funkci parenthesis_check(text: str) -> bool, která pro zadaný řetězec složený pouze ze závorek [](){} ověří, že jde o korektní uzávorkování.

>>> print(parenthesis_check('([]({()}))[]{[()]}'))
True
>>> print(parenthesis_check('([)]'))
False


# ÚKOL 5
# Napište funkci morse(text: str) -> str, která umí dešifrovat morseovu abecedu 
# pomocí slovníku a dešifrujte následující vzkaz:

.--. --- --.. . -- ... - .- -. . | ...- . -. ..- .--- - . | .--. --- --.. --- .-. -. --- ... - | - --- -- ..- - --- | .... .-.. .- ... . -. .. | .... --- ...- --- .-. .. | -.- | ...- .- -- | .--. .-. --- ... - . -. .. -.- | ...- --- --. --- -. | .--- . .-.. -.-. | --.. | --. .- .-.. .- -.- - .. -.-. -.- . .... --- | ..- .-. .- -.. ..- | .--. .-. --- | .--. .-.. .- -. --- ...- .- -. .. | .... -.-- .--. . .-. .--. .-. --- ... - --- .-. --- ...- . | -.. --- .--. .-. .- ...- -.-- | .--- .- -.- | -. . .--. --- -.-. .... -.-- -... -. . | ...- .. - . | .--. .-.. .- -. -.-- | .--. .-. --- | .-. --- --.. ...- --- .--- | --- -.- .-. .- .--- --- ...- -.-- -.-. .... | --- -... .-.. .- ... - .. | --. .- .-.. .- -..- .. . | ...- -.-- --.. .- -.. ..- .--- .. | ...- -.-- -... ..- -.. --- ...- .- -. .. | -. --- ...- . | . -..- .--. .-. . ... -. .. | -.. .- .-.. -. .. -.-. . | -.- - . .-. .- | -- .- | ...- . ... - | ...- .- ... .. | ... .-.. ..- -. . -.-. -. .. | ... --- ..- ... - .- ...- --- ..- | ...- .- ... . | .--. .-.. .- -. . - .- | .--- . | -... --- .... ..- --.. . .-.. | .--- . -.. -. .- | --.. | - . -.-. .... | -.- - . .-. . | .--- ... --- ..- | ..- .-. -.-. . -. . | -.- | -.. . -- --- .-.. .. -.-. .. | -.-. . .-.. .- | .- -.- -.-. . | -... ..- -.. . | - .-. ...- .- - | -. . -.-. . .-.. . | -.. ...- . | .--. --- --.. . -- ... -.- . | -- .. -. ..- - -.-- | -.. . -.- ..- .--- .. | ...- .- -- .- .-.. . | -. . .--. .-. --- .--. .- -.. . .--- - . | .--. .- -. .. -.-. .

# Překlad morseovi abecedy je následující.
.-		a
-...	b
-.-. 	c
-..		d
. 		e
..-.	f
--. 	g
....	h
.. 		i
.---	j
-.- 	k
.-..	l
-- 		m
-.		n
--- 	o
.--.	p
--.- 	q
.-.		r
... 	s
-		t
..- 	u
...-	v
.-- 	w
-..-	x
-.-- 	y
--..	z
