Institute of Computer Science
  1. Courses
  2. 2018/19 fall
  3. Computer Programming (LTAT.03.001)
ET
Log in

Computer Programming 2018/19 fall

  • Esileht
  • Kursuse korraldus
  • Õpik
  • Projekt
  • Lisaülesanded
  • KKK
  • Viited
  • Silmaringimaterjalid

10. praktikum

0. Järjend hulgaks (soojendusülesanne)

Pythonis on küll olemas funktsioon set, mis muuhulgas suudab teisendada järjendit hulgaks, aga harjutamise mõttes kirjuta funktsioon järjend_hulgaks, mille argumendiks on suvaline järjend ja mis tagastab selle elementide põhjal koostatud hulga. Funktsiooni set võib seejuures kasutada ainult ilma argumendita (st tühja hulga moodustamiseks).

1. Hulkade otsekorrutis

Kirjuta funktsioon, mis kahe hulga (või järjendi) A ja B põhjal tagastab uue hulga (või järjendi), mille elementideks on kõikvõimalikud paarid, mida saab A ja B elementide "paaritamisel" moodustada. Näiteks, kui hulgad on {'a','b'} ja {1,2,3}, siis tulemuseks peaks olema hulk {('a',1), ('a',2), ('a',3), ('b',1), ('b',2), ('b',3)}.

Demonstreeri funktsiooni tööd kaardimastide hulga {'♥','♦','♠','♣'} ja kaarditugevuste hulga {'A', 'K', 'Q', 'J', '10', '9', '8', '7', '6', '5', '4', '3', '2'} kombineerimisega.

(http://et.wikipedia.org/wiki/Otsekorrutis)

2. Sugupuu

Failis meesliinid.txt on igal real inimese nimi ja seejärel tema isa nimi. Kirjuta programm, mis küsib kasutajalt kaks nime ja ütleb, kas esimene on teise eellane (st isa või vanaisa või vana-vanaisa jne).

Ülesande lahendamiseks on soovitatav lugeda andmed failist sõnastikku. Sõnastikust otsimiseks kirjuta funktsioon (nt on_eellane), mille argumentideks on sõnastik ja kaks nime ning mis tagastab tõeväärtuse vastavalt sellele, kas esimene inimene on teise eellane.

Lihtsam variant: programm/funktsioon peab ütlema, kas esimene inimene on teise isa (st vahetu eellane).

Raskem variant: programm kasutab eellaste tuvastamisel ka infot emade kohta (sugupuu.txt).

3. Pikslimaatriks

Pilte esitatakse arvutis enamasti pikslite maatriksina. Halltoonides piltide puhul tähistatakse pikslit harilikult täisarvuga vahemikus 0...255, kus 0 tähistab musta ja 255 valget, ning vahepealsed väärtused vastavaid halltoone. Seega võiksime halltoonides pilti esitada Pythoni listide listina ehk maatriksina. Näiteks sedasi:

 [[252, 252, 252, 252, 220, 172, 175, 132, 127, 139, 151, 212, 252, 252, 252, 252],
  [252, 252, 251, 163, 215, 195, 124,  99,  95, 119, 139, 155, 135, 243, 252, 252],
  [252, 252, 179, 252, 220,  63,  56, 103, 115,  67,  68,  79, 124, 124, 251, 252],
  [252, 163, 251, 252, 147,  39,  98, 252, 252, 119,  59,  67,  60,  99, 131, 252],
  [212, 212, 252, 252, 128,  36,  84, 252, 252, 104,  51,  63,  59,  55, 100, 204],
  [179, 251, 251, 252, 163,  19,  47,  79,  99,  44,  55,  56,  55,  52,  59, 131],
  [175, 252, 243, 251, 236,  79,  19,  35,  31,  51,  55,  51,  51,  51,  47,  67],
  [148, 252, 244, 236, 244, 235, 143,  67,  50,  28,  28,  43,  44,  43,  43,  52], 
  [151, 252, 243, 243, 231, 236, 244, 231, 228, 200,  79,  27,  43,  43,  39,  52], 
  [175, 252, 244, 239, 235, 228, 220, 228, 227, 223, 220,  67,  23,  36,  35,  60], 
  [179, 243, 252, 239, 235, 228, 235, 171, 103, 196, 215, 152,  19,  35,  35, 116], 
  [215, 187, 252, 239, 232, 236, 220,  55,   3, 104, 216, 199,  19,  35,  34, 195], 
  [252, 148, 239, 252, 235, 228, 232, 115,  27, 164, 215, 184,  19,  28,  98, 252], 
  [252, 244, 167, 243, 251, 235, 227, 227, 207, 212, 231, 115,  12,  59, 244, 252], 
  [252, 252, 244, 147, 199, 227, 244, 236, 231, 223, 135,  23,  91, 251, 252, 252], 
  [252, 252, 252, 252, 212, 155, 147, 132, 132, 151, 148, 187, 252, 252, 252, 252]]

Laadi alla ja paki lahti fail pixboard.zip, milles olev moodul pixboard oskab sedasi esitatud "pilte" näidata päris piltidena. Pixboard oskab ka taolist maatriksit etteantud gif-faili põhjal genereerida. Enne näitamist võib maatriksit Pythoni vahenditega muuta – sedasi saab teha päris lahedaid efekte. Koos mooduliga on selles zip-failis ka mõned demoskriptid – vaata need enne ülesannete juurde asumist nummerduse järjekorras läbi.

Ülesanded (kõiki neid saab teha kas halltoonidega või värvidega).

  • Muuda pildi maatriksit selliselt, et pilt muutuks heledamaks.
  • Genereeri sisseloetud pildi maatriksi põhjal uus, 90° pööratud maatriks.
  • Tekita algse pildi peegelpilt.
  • Laadi erinevatesse maatriksitesse kaks erinevat, aga samade mõõtmetega pilti ja "sulata" neist kokku üks pilt.
  • Suurenda/vähenda pildi mõõtmeid.

Ülesanded värvipiltidega.

  • Katseta värvide komponentide muutmist, nt vaheta kõikide pikslite juures punase ja sinise komponendid. NB! Pead tegema uued pikslid, sest kuna pikslid on (vaikimisi) antud ennikutena, ei saa neid kohapeal muuta.
  • Teisenda värvipilt halltoonidesse, kasutades vaid ühe värvikanali infot.
  • Tee värvid erksamaks.
  • Tee värvid tuhmimaks.
  • Tee demo2-stiilis pilt, kus punane komponent sõltub x-koordinaadi siinusest, roheline komponent koosinusest ja sinine komponent piksli kaugusest pildi keskpunktist.
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment