ITI0140:Ülesanne 10

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti

EX08 vol 2 - Madise lähetamine

Nüüd, kus olete Madisele kirjutanud testid, et Madise koodi hinnata, on Madis aru saanud, et Madise kood ei olnud suurem asi. See-eest on ta mõistnud, et teie kirjutate püütoni koodi palju paremini. Seetõttu soovib Madis, et kirjutaksite talle kõnekeskuse programmi ise.


NB: Kuna aga Madis on hiljuti lugenud sellest, kui energia- ja töösäästlikud on generaator ja list comprehension, on ta teid kohustanud mõlemit teie lahenduses kasutama.


Meeldetuletuseks, kõnekeskuse tarkvara peaks olema klass nimega CallCentre. CallCentre-il on meetod create_sentence, mis võtab sisse lause süntaktilise vormi sõnena, ja tagastab reeglistikule vastava lause. Reeglid on järgnevad:


noun = koer | porgand | madis | kurk | tomat

target = koera | porgandit | madist | kurki | tomatit

verb = sööb | lööb | jagab | tahab | ei taha

adjective = ilus | kole | pahane | magus | sinu

targetadjective = ilusat | koledat | pahast | magusat | sinu

sentence = noun verb target .

beautifulsentence = adjective noun verb targetadjective target .

twosentences = sentence sentence


Kusjuures, kui kasutada mõnd reeglit, nagu noun, või target, siis peab programm järgmine kord tagastama järgmise sõna, minnes tagasi algusesse, kui jõutakse sõnade lõppu. Lisaks tuleb tähele panna, et tundmatu sõna/sümbol tuleb vastuses hoida muutmata. Kõik reeglid on ainult väikeste tähtedega.


NB: Lahenduses tuleb kasutada nii list comprehensionit (näiteks sõnade järjendikuks tegemisel), kui ka generaatorit (sobib väga hästi sõnade genereerimiseks, nii ei pea hoidma klassis nn count muutujat)


Näiteks:

centre = CallCentre()

centre.create_sentence('noun !') -> 'koer !'

centre.create_sentence('noun verb target ?!') -> 'porgand sööb koera ?!'

centre.create_sentence('beautifulsentence noun .') -> 'ilus madis lööb koledat porgandit . kurk .'