Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

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 stopy matice

Domácí úkol

Lehká varianta

  • Napište program even.py, který načte soubor zadaný jako první argumentsys.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ší 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

courses/b3b33alp/cviceni/t05.txt · Last modified: 2020/10/19 17:32 by stepan