Zápočtový program - speficikace a vypracování - Ynformace, token a odkaz na oul Alg Teoreticke cviceni je spojeno s praktickym: co jsme teoreticky probrali to jsme implementovali 1. Opakovani predavani parametru funkci: hodnotou a odkazem; jake promene se pradavaji odkazem a jake hodnotou? (mutable vs immutable) PRISTE 3. Rekurze: úvod do teorie a priklady: dle BTS_Naive_priklady_1_4.py T -> BT -> n-arni T -> BST; BT jako datova struktura a jeji rekurzivni definice DFS pre in post # https://www.enjoyalgorithms.com/blog/binary-tree-traversals-preorder-inorder-postorder 5. Rekurzivni DFS pres meta algoritmus prochazeni stromu na nerekurzivni prochazeni stromu - obecne 5.2 Stack: def, implementace (arr, linkedList); priklady; LIFO 5.6 Fronta: def, implementace (arr, linkedList); priklady; FIFO 5.8 Date Structure v meta algoritmu: a] stack; b] fronta a jejich simulace na konkretnim strome - FIFO a LIFO resp. Fronta a Stack jako princip usporadani 7. DFS pro BT: rekurze a stack 9. BFS pro BT: fronta 10. AIMA: Russel, Norvig: 3. Solving Problems by Searching; DFS a BFD https://aima.cs.berkeley.edu/ 11. Porovnani DFS a BFS 11.1 Slozitost na cas a prostor Urcete prostorovou slozitost DFS a BFS v zavislosti na houbce (BT) stromu 13. Implementace BFS frontou a DFS stack a rekurze 13.2 Implementace Stacku a Fronty v Pythonu napr.: a] collections b] list: popleft(), pop() a pop(-1), append(),... https://www.geeksforgeeks.org/deque-in-python/ Prg * std in and * string splitting * f-string formating https://ksvi.mff.cuni.cz/~dingle/2024-5/prog_1/notes_3.html * OOP: Objetově orientované programování https://www.programiz.com/python-programming/class - objekty, třídy, instance; 2 motivace: a) buňky b) struct s akcemi/funkcemi - encapsulation, inheritence, polymorfism Příklady *3. Matrix Sum Write a function that takes two matrices (list listu), and returns the sum of the matrices. Assume that the matrices have the same dimensions. *4. Symmetric Matrix A square matrix M is symmetric if Mij = Mji for all i and j. For example, here is a symmetric matrix: 1 2 3 2 5 4 3 4 6 Write a function isSymetric(matrix) that takes a square matrix M represented as a list of lists, and returns True if the matrix is symmetric. [ [1, 2, 3], [2, 1, 5], [3, 4, 1] ] *5. Napiste funkci, ktera dostane matici (jako list listu) a vytiskne ji jako "hezkou" matici: mezi cisly je jedna mezera a cisla jsou zarovnana ve sloupci viz priklad a] predpokladejte ze velikost cisla je maximalne 3 cislice b] predpokladejte ze velikost cisla nezname (ale neni vetsi nezli 20 cislic) matici [ [1, 2, 3], [2, 1, 5], [3, 4, 1] ] vypsat 1 2 3 2 1 5 3 4 1 matici [ [111, 2, 333], [22, 1, 5], [3, 4, ] ] *5.1 To samé, ale se zarovnáním čísel Za předpokladu, že největší číslo je 3-ciferné 111 2 333 22 1 5 3 4 11 *6. Napište funkci, přečte a naparsuje celočíselnou matici ze standardního vstupu a vrátí ji jako list listu Matice na vstupu je uložena po řádcích, jednotlivé hodnoty jsou odděleny čárkou a proloženy mezerami, vstup je korektní. Priklad vstupu: 1, 2, 3 2, 1, 4 3, 4, 1 nebo 1, 3, 3, 4 2, 2 , 33, 5 0, 0 ,2 ,22 *7. Napiste funkci, ktera nacte matici ze stdin a "hezky" ji vypise (funkce na cteni a parsovani ze stdin ulozte do jednoho souboru, funkci pro "hezky" tisk do druheho souboru a funkci pro cteni a tisk do tretiho souboru) (spojeni prechozich dvou prikladu dohromady) # OOP # https://www.programiz.com/python-programming/object-oriented-programming # https://ksvi.mff.cuni.cz/~dingle/2023-4/prog_1/notes_6.html # 1 # Definujte tridu Zvire majici: # a) uid # b) konstruktor(uid) # c) abstraktni metodu voice() # 2 # A od ni podedte dve tridy: # a) Pes # b) Kocka # pro ne pretezte\implementujte metodu voice(), # která vytiskne jejich hlas (Kocka "Mnau" a Pes "Haf") a uid instance # 3 # Vytvorte # a) 3 instance Kocky # b) 2 instance Psů, # ktere ulozite do listu # 4 # List iterujte a zavolejte na vsech instacich objektů metodu voice() # 5 # Ve for cyklu vytvorte list 100 Kocek # a ve for cyklu ho projdete a zavolejte metodu voice()