10. kodutöö
Püüa teha kummastki ülesandest nii palju, kui oskad!
1. Teksti analüüs
Kirjuta funktsioon erinevad_sümbolid, mis võtab argumendiks sõne ning tagastab kõigi antud sõnes leiduvate erinevate sümbolite hulga.
>>> erinevad_sümbolid("hulk ei sisalda kunagi korduvaid elemente") {'h', 'e', 'r', 'v', 'l', 'k', 'i', 'g', 't', 'd', 's', 'u', 'a', ' ', 'm', 'o', 'n'}
Seejärel kirjuta funktsioon sümbolite_sagedus, mis võtab argumendiks sõne ja tagastab sõnastiku, mille kirjeteks on sõnes sisalduvad tähed koos nende esinemissagedustega. Sõnastiku võtmeteks peaksid olema tähed või muud sümbolid (st tehniliselt võttes sõned) ja väärtusteks täisarvud.
>>> sümbolite_sagedus("Hei hopsti, väikevend!") {'H': 1, 'e': 3, 'i': 3, ' ': 2, 'h': 1, 'o': 1, 'p': 1, 's': 1, 't': 1, ',': 1, 'v': 2, 'ä': 1, 'k': 1, 'n': 1, 'd': 1, '!': 1}
Loo funktsioon grupeeri, mis võtab argumendiks sõne ja tagastab sõnastiku, kus on kolm võtit: täishäälikud, kaashäälikud ja muud sümbolid (st kirjavahemärgid ja tühikud). Iga võtme väärtuseks on vastavat tüüpi häälikute ning esinemissageduste paaride hulk.
>>> grupeeri("sõida tasa üle silla") {'Täishäälikud': {('a', 4), ('e', 1), ('i', 2), ('õ', 1), ('ü', 1)}, 'Kaashäälikud': {('d', 1), ('l', 3), ('t', 1), ('s', 3)}, 'Muud': {(' ', 3)}}
Automaatkontroll. Igal funktsioonil on üks sõnetüüpi parameeter. Esimene funktsioon tagastab hulga, ülejäänud kaks sõnastiku. Kolmanda funktsiooni sõnastikus on iga võtme väärtuseks hulk; paarides on esimene element sõne, teine täisarv. Suur- ja väiketähed loetakse igal pool erinevaks. Piisab esitada ainult funktsioonide definitsioonid.
2. Trips-traps-trull
Kirjuta funktsioon võitja, mis võtab argumendiks maatriksina (st listide listina) esitatud 4×4-ruudustikuga trips-traps-trulli mängu seisu. Funktsioon tagastab sõnastiku, kus võtmeteks on sümbolid 'O' (so suurtäht O, mitte null) ja 'X'. Kummagi võtme väärtuseks on arv, mis näitab, mitu korda esineb see sümbol ruudustikus kolm korda järjest horisontaalselt, vertikaalselt või diagonaalselt.
NB! Mängu seis ei pruugi olla alati korrektne (st 'O' ja 'X' esinemiste arv ruudustikul võib erineda rohkem kui ühe võrra).
Näide 1.
>>> võitja([[' ',' ',' ',' '], [' ',' ',' ',' '], [' ',' ',' ',' '], [' ',' ',' ',' ']]) {'O': 0, 'X': 0}
Näide 2.
>>> võitja([['X','X','X',' '], [' ','O',' ',' '], [' ',' ','O',' '], [' ',' ',' ','O']]) {'O': 1, 'X': 1}
Näide 3.
>>> võitja([['O',' ',' ','X'], [' ','O','X',' '], [' ','X','O',' '], ['X',' ',' ','O']]) {'O': 2, 'X': 2}
(Neljase rea koosseisus on kaks kolmest rida – esimesed kolm elementi ja viimased kolm elementi.)
Näide 4.
>>> võitja([['O',' ','O','X'], ['O','O','X','X'], ['O','X','O',' '], ['X','X','X','O']]) {'O': 4, 'X': 3}
Automaatkontroll. Funktsiooni parameeter on listide list (maatriks), võib eeldada, et mõõtmed on 4×4. Tagastatakse alati kahe võtmega sõnastik. Suur- ja väiketähed on erinevad. Ka siin piisab esitada ainult funktsiooni definitsioon.