Cvičení 5: 2D pole
náplň cvičení
Úkol 1-2 Opakování
Dvourozměrné pole
pole=[]
f=open('pole.txt','r')
for line in f:
pole.append(list(map(int, line.split())))
Matice
Ú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
stopy matice
Domácí úkol
Lehká varianta
Napište program, který řeší dvousměrku (lehčí variantu osmisměrky).
Vstup:
Jména dvou souborů zadaná na příkazové řádce.
První soubor obsahuje 2D matici písmen
Druhý soubor obsahuje slova, která jsou v osmisměrce obsažena.
Výstup:
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 případě, že existuje více řešení, vypište libovolné z nich
Příklady:
python3 wordsearch.py osmismerka.txt slova.txt
Testovat můžete na následujícím příkladu:
'osmismerka.txt'
xmuinjekci
evelkochov
cadvouhrac
feminizaci
pyzlanpbik
ldvojlinky
osvrhloubd
dqldrvandy
yevergreen
olympskout
'
slova.txt'
dvojlinky
feminizaci
velkochov
dvouhra
olympskou
plody
dyn
rab
svrhlou
np
jo
lordem
velko
injekci
skout
mva
vandy
dvou
evergreen
ech
zla
kb
un
hrr
aj
ona
Výsledek Vašeho programu bude:
5 1 0
3 0 0
1 1 0
2 2 0
9 0 0
4 0 1
6 9 1
2 7 1
6 1 0
4 5 0
0 5 1
4 3 1
1 1 0
0 3 0
9 5 0
0 1 1
7 5 0
2 2 0
8 1 0
0 6 1
4 2 0
5 8 1
6 7 1
6 4 1
4 4 1
2 4 1
Těžká varianta
Napište program go.py, který načte soubor zadaný na příkazové řádce (argv[1]
). Tento soubor kóduje stav gobanu po tahu černého. Program zkontroluje, zda černý zajal nějaké kameny bílého. Výstupem programu je stav gobanu po odebrání kamenů, které mají být odstraněny.
Pokud by program odhalil po odebrání kamenů bílého nějaké kameny černého, které mají být také odebrány, pak se jedná o chybný stav a na výstup vypíšete pouze hlášení ERROR a nebudete vypisovat hodnotu gobanu.
Soubor (viz. příklad
goban.txt) obsahuje dvourozměrné pole, ve kterém jsou hodnoty 0 - nepoužité pole, 1 - kámen bílého, 2 - kámen černého.
Program v souboru go.py odevzdejte pomocí odevzdávacího systému (úloha HW05).
Například pro zadaný goban.txt je výsledek spuštění python3.py go.py goban.txt tento:
0 0 0 0 0 2 0 0 0
0 0 0 0 0 1 2 0 2
2 0 0 2 1 0 1 2 0
0 2 2 1 1 1 1 2 1
0 0 0 2 2 2 2 0 2
2 0 0 0 2 0 0 0 0
0 0 2 0 2 0 0 0 0
0 0 0 0 2 0 0 0 0
0 0 0 2 0 0 0 0 0