====== Cvičení 5: 2D pole ====== ===== náplň cvičení ===== ==== Úkol 1-2 Opakování ==== * Nedokončený příklad z minulého cvičení ==== Dvourozměrné pole ==== * Načtení matice - dvourozměrného pole - ze souboru kombinuje načítání vektoru z minulého cvičení pole=[] f=open('pole.txt','r') for line in f: pole.append(list(map(int, line.split()))) ==== Matice ==== * 2D pole se hodí např. pro reprezentaci matic ==== Úkol 3 Výpis matice ==== * Napište funkci ''printMatrix'', která vypíše matici zadanou 2D polem * Prvky budou odděleny mezerou a každý řádek bude vypsán na nový řádek * Kromě prvků matice nebude vypsán žádný jiný znak ==== Úkol 4 Násobení vektoru a matice ==== * Napište funkci ''multiVecMat(v,m)'', která vypočte součin vektoru $v$ a matice $m$. * Pokud nesouhlasí rozměry matice a vektoru, pak funkce vrací ''None''. * Vypočtete výsledek násobení $v \cdot m$: m=[[0,0,1],[0,1,0],[1,0,0]] v=[2, 4, 6] ===== Domácí příprava ===== Implementujte následující úlohy: * Funkce, která v matici najde všechny záporné hodnoty, vraťte seznam jejich indexů * Funkce pro násobení dvou matic * Funkce pro výpočet determinantu matice * Funkce pro výpočet [[ https://en.wikipedia.org/wiki/Trace_(linear_algebra) | stopy ]] matice ===== Domácí úkol ===== ==== Lehká varianta ==== * Napište program **even.py**, který načte soubor zadaný jako první argument{{courses:b3b33alp:cviceni:matrix.txt|sys.argv[1]}} a zjistí, který řádek a který sloupec v této matici obsahuje nejvíc sudých čísel. * Soubor obsahuje matici celých čísel m x n - čísla m a n zjistíte podle délky a počtu řádek souboru. * Program vytiskne na standardní výstup indexy všech řádků matice, které obsahují maximální počet sudých čísel (řádky začínají indexem 0, pokud má více řádků stejný počet sudých čísel, vytisknou se všechny tyto indexy vzestupně tedy od nejmenšího po největší). * Po vytištění indexů řádků, vytiskne program indexy sloupců, které obsahují maximální počet sudých čísel (sloupce začínají indexem 0, pokud má více sloupců stejný počet sudých čísel, vytisknou se všechny tyto indexy opět vzestupně od nejmenšího po největší). * Program v souboru **even.py** odevzdejte pomocí odevzdávacího systému (úloha HW05). * Můžete předpokládat, že všechny matice jsou zadány korektně, tedy všechny řádky mají stejný počet prvků. === Příklad === Vstup: 1 1 2 5 6 1 5 6 8 5 6 7 11 12 10 12 11 11 8 10 5 6 7 9 6 5 10 12 15 19 Výstup: 1 2 3 4 2 ==== Těžká varianta ==== * Napište program, který řeší [[https://cs.wikipedia.org/wiki/V%C3%ADcesm%C4%9Brka|osmisměrku]]. * **Vstup:** * Jména dvou souborů zadaná na příkazové řádce. * První soubor (sys.argv[1]) obsahuje 2D matici **písmen** * Druhý soubor (sys.argv[2]) obsahuje slova, která jsou v osmisměrce obsažena. * **Výstup:** * Slovo tvořené zbylými písmeny po vyšrtání všech zadaných slov. * Soubor odevzdejte do BRUTE, úloha HW05, soubor **wordsearch.py** * Předpokládejte, že * Program je volán se jmény existujících souborů * Soubory jsou neprázdné a vždy obsahují správně zadané matice * Všechny osmisměrky obsahují zadaná slova právě jednou Příklady: python3 wordsearch.py osmismerka.txt slova.txt Testovat můžete na následujícím příkladu: 'osmismerka.txt' desazevuohadao tasorddietauet iilesvoknevvte rdmopoaarzzaob aoetdlbaeebnie hpnaaianncuudd croplvykradlie joeymizonauemn emnszssolyvhuk lohoboombmsnka eceserpxeaielv nichomdnamvxac dcadcaasandruo ovatejolynetud 'slova.txt' docvakne promocic eden osypat venkov nezve zase vykradli nabil idealismem noema vylo sandru aminu janem idiote yzop ladu nezvu zbudu mukla alku obav synka debet cadca charit idola nelej seli neonem hekala dalo mand ojet osob ozva boom nich exprese dieta netu area zimy ahou rosa ozim vanul lehne mixu saze uvez ossz ulehne hada Výsledek Vašeho programu bude: odpochodovaly