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]
Témata k procvičení
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
play.py, který načte soubor zadaný jako první argument
sys.argv[1] a zjistí, kam musí táhnout křížek (1), aby vyhrál, tedy aby vytvořil piškvorku.
Soubor obsahuje matici celých čísel n x n - celých čísel, n zjistíte podle délky a počtu řádek souboru.
Význam čísel:
0 - volné pole
1 - křížek
2 - kolečko
Program vytiskne na standardní výstup indexy řádku a sloupce volného políčka matice, kam když zahraje hráč křížek (1), tak vyhraje.
Program v souboru play.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ů, který se rovná počtu řádků souboru.
Příklad
Vstup:
0 2 0 0 0 0 2 2 1 0
0 0 2 2 1 2 1 2 1 1
1 2 2 0 1 1 1 2 0 2
2 2 0 2 0 2 2 2 2 0
0 0 0 0 1 2 2 0 0 1
1 1 1 0 2 1 1 2 1 2
1 2 1 1 1 2 2 1 1 1
2 1 0 2 2 0 2 2 1 1
0 2 1 2 2 2 0 0 2 0
0 0 1 0 1 2 2 1 0 1
Výstup:
7 2
Vysvětlení: Místo pro vytvoření piškvorky je označeno X
0 2 0 0 0 0 2 2 1 0
0 0 2 2 1 2 1 2 1 1
1 2 2 0 1 1 1 2 0 2
2 2 0 2 0 2 2 2 2 0
0 0 0 0 1 2 2 0 0 1
1 1 1 0 2 1 1 2 1 2
1 2 1 1 1 2 2 1 1 1
2 1 X 2 2 0 2 2 1 1
0 2 1 2 2 2 0 0 2 0
0 0 1 0 1 2 2 1 0 1
Těžká varianta
figura | bílý | černý |
král | 1 | -1 |
dáma | 2 | -2 |
věž | 3 | -3 |
střelec | 4 | -4 |
jezdec | 5 | -5 |
pěšec | 6 | -6 |
volné pole | 0 | 0 |
Výstup (standardní výstup)
Soubor (viz. příklad
chess.txt) obsahuje dvourozměrné pole, ve kterém jsou výše definované hodnoty (soubor nebývá zarovnán tak, jak je to níže v textu; použití split() ale dává stejné výsledky)
Také nemusíte uvažovat výměnu pěšce na posledním políčku šachovnice za jinou figuru, protože pěšci nejsou umístěni v dosahu posledního řádku šachovnice.
Program v souboru chess.py odevzdejte pomocí odevzdávacího systému (úloha HW05).
Vstup obsah souboru, zadaného jako vstupní argument:
0 0 0 0 0 0 0 0
-6 0 -6 0 0 0 0 0
0 0 0 0 -6 -6 -6 -3
0 0 0 -6 0 -5 4 0
0 0 0 5 6 0 -4 6
6 0 -5 4 0 6 0 0
0 6 6 0 0 0 0 0
1 0 0 5 -1 0 0 0
Výstup:
3 6 6 3
tedy tah střelec (4) z pole g4 na d2