13. nädal Ülesanne 1 Antud on täisarvudest koosnev ristkülikukujuline tabel. Kirjutada programm, mis leiab sellest kõik kohad, kus kolm reas, veerus või peadiagonaaliga paralleelsel diagonaalil kõrvuti olevat elementi moodustavad summa kujul A+B=C. Summade otsimisel vaadelda ainult kolmikuid ridades vasakult paremale, veergudes ülalt alla ja diagonaalides vasakult-ülalt paremale-alla ning summa peab olema kolmiku viimane element. Sisend. Tekstifaili TABEL.SIS esimesel real on tabeli ridade arv N (1 <= N <= 100) ja veergude arv M (1 <= M <= 100). Faili järgmisel N real on igaühel M täisarvu, mille absoluutväärtus ei ületa 1000 -- tabeli elemendid ridade kaupa. Väljund. Tekstifaili TABEL.VAL väljastada üks rida iga leitud kolmiku kohta: kõigepealt selle esimese elemendi reanumber, seejärel veerunumber ja seejärel täht R (kui kolmik on reas), V (kui kolmik on veerus) või D (kui kolmik on diagonaalis). Rea- ja veerunumbri, samuti veerunumbri ja suunatähe vahele jätta tühik. Tabeli read on nummerdatud ülalt alla, veerud vasakult paremale ning mõlemad numeratsioonid algavad 1st. Kui tabelis pole ühtki nõutud kujuga summat, väljastada faili esimesele reale POLE. Testid on failis t1.rar Ülesanne 2 Lipu liikumise kohta: ülesanne on eraldi lingi all. Kahjuks puuduvad testid koos õigete vastustega. Selles ülesandes tuleks massiivi abil imiteerida malelauda, kanda sinna kõigepealt lippuda asukohad ja seejärel märkida ära lahtrid, kuhu nad tulistada saavad. Veel võimalusi kahemõõtmelise massiiviga töötamiseks ---------------------------------------------------- Selle tunni ülesanded kasutavad järgmist linnade-vaheliste kauguste tabelit: Elva Haapsalu Kuressaare Narva Pärnu Rakvere Tallinn Tartu Valga Viljandi Võru Elva 0 267 308 211 156 152 216 27 60 70 75 Haapsalu 267 0 155 314 111 203 101 258 254 199 310 Kuressaare 308 155 0 429 152 315 216 330 295 249 351 Narva 211 314 429 0 299 116 212 184 271 265 252 Pärnu 156 111 152 299 0 183 129 178 143 97 199 Rakvere 152 203 313 116 183 0 99 126 212 151 193 Tallinn 216 101 216 212 129 99 0 189 252 161 257 Tartu 27 258 330 184 178 126 189 0 87 73 68 Valga 60 254 295 271 143 212 252 87 0 91 71 Viljandi 70 199 249 265 97 151 161 73 91 0 128 Võru 75 310 351 252 199 193 257 68 71 128 0 Andmed on kirjas failis linnad.txt ja linnad_rivis.txt. Failidel on erinev ülesehitus ja seega ka erinev sisselugemise taktika. Et vähendada peavalu faili lugemisega, on näide mõlema faili lugemisest näidete all (linnad_lugemine_1.py ja linnad_lugemine_2.py). Näiteid tuleks võtta üldisema ideena. Vaatame üle ja katsume aru saada, kuidas lugemine ja listidesse panemine toimub. Ülesanne 1 Leia selle tabeli järgi: a) Milliste kahe tabelis oleva linna vahel on vahemaa kõige väiksem? b) Milliste kahe tabelis oleva linna vahel on vahemaa kõige suurem? c) Millisel tabelis olevatel linnadel asub 100 kilomeetri raadiuses kõige rohkem teisi linnu? Ülesanne 2 Kasutaja sisestab kahe linna nime ja programm vastab, kui suur vahemaa neil on. Kui linna ei leita, siis antakse vastav veateade ja lubatakse linna nime uuesti sisestada. Suur- ja väiketähtede erinevust peaks programm ignoreerima ehk vastupidi öelduna: Tartu, tartu ja TARTU võiksid kvalifitseeruda samaks linnaks. Ülesanne 3 Eesti Kergejõustikuliit (EKJL) tahab korraldada ühes neist linnadest võistlused. EKJL peab rahastama igast linnast võistluseks valitud linna sõitva bussi sõidu võistlusele ja tagasi. Millist linna EKJL-le soovitada, kui ainueesmärk on vähima bussisõidu kogukilometraazhi saavutamine (eeldusel, et nii kulub ka vähem kütust)? Väljasta vastusena, millise linnaga on tegu ja kui palju keskmiselt sinna teistest linnadest maad on.