Rešitve s komentarji
Skoki
Naloga preskuša, ali znamo napisati zanko in jo po potrebi prekiniti. Očitno zahteva samo, da si zapomnimo trenutno pozicijo (p) in jo v zanki spreminjamo. Šteti moramo poteze in če trenutno pozicija kdaj spet postane 1, vrnemo število potez. Če je trenutna pozicija izven seznama, vrnemo -1. Kako pa zaznamo cikel? O tem govori namig: naredili bomo samo toliko potez, kolikor je dolg seznam. Če v tem času ne pridemo na začetno polje, ne bomo nikoli.
Transakcije
Naloga preskuša, ali znamo narediti in uporabiti slovar. Kot pravi namig,
najprej pretvorimo vse skupaj v slovar; to lahko naredimo z zanko for ali, če
smo bili na predavanjih dovolj pozorni, s klicem funkcije dict
.
Nato gremo z zanko prek transakcij, odštejemo denar prvemu in ga preštejemo
drugemu. Končno v tem slovarju poiščemo tistega z največ denarja. Z malo
sprednosti bi lahko uporabili kar funkcijo max
, v spodnji rešitvi
pa smo uporabili običajno zanko.
Deli niz
Če je niz "deljiv" s k, bo njegova dolžina večkratnik k in če vzamemo prvih
len(s)/k
znakov ter jih pomnožimo s k
, spet dobimo
isti niz. Če vse to drži, torej vrnemo teh prvih len(s)/k
znakov.
Sicer ne naredimo ničesar in funkcije, ki ne vračajo ničesar, vemo, vračajo
None
, kot zahteva naloga.
Pravokotniki
Bistvo naloge je, da znate napisati tri funkcije in jih poklicati med sabo. Vse, kar se dogaja znotraj njih, je trivialno: prvi dve smo videli v domačih nalogah (recimo Album), tretjo pa v lanskem izpitu (in še kje). A tudi, če jih ne bi, so preproste.
Globina drevesa
Naloga zahteva, da znamo izpeljati razred in dodati metodo (to ne bi smel biti problem) in da znamo napisati rekurzivno funkcijo, ki je zelo podobna tistim, ob katerih so preživeli večji del enega od predavanj.