Rešitve s komentarji
Trdnjava
Čeprav naloga po zgodbici spominja na Kojna, zahteva povsem druge "veščine": v bistvu preverja samo ali znamo napisati zanko in jo na primernem mestu prekiniti.
Pozicija, p
je tule striktno terka. Namesto nje bi lahko
uporabljal tudi x
in y
. Stvar okusa. Ne spreglejte
pa, da se da tudi niz razpakirati - tule sem ga razpakiral v kam
in koliko
.
Takšne naloge se sicer da vedno učinkovito ukrotiti s kompleksnimi števili,
takole (j
v večini programskih jezikov pomeni imaginarno enoto,
tisto, kar matematiki pogosteje zapisujejo kot i):
Natakar
Naloga, ki bi bila zelo preprosta, če bi sledili namigu - ali pa se
sami spomnili - na defaultdict
. Naredimo takšen slovar, nato
pa se sprehodimo z zanko čez naročila in dodajamo ali preklicujemo jedi.
Primerjanje seznamov
Te naloge smo se bali, vendar se je izkazala za najpopularnejšo. Večinoma ste jo reševali tako, da ste prešteli, kolikokrat je element prvega seznama večji od drugega in kolikokrat je obratno. Potem ste to primerjali z dolžino seznamov: če je prvi vedno večji, vrnete 1, če vedno manjši, -1, sicer pa 0.
To torej znate. Tule pa je nekoliko drugačna rešitev. Kot sem obljubil, snov zadnjega predavanja ni obvezna, je pa priročna:
Kolikor vem, pa sem vam povedal dovolj, da bi jo morali znati rešiti tudi takole (predlagam, da se premozgate skozi to rešitev, saj ima lep trik):
Catch je v tem, da je v
seznam, sestavljen iz večjih
(istoležnih elementov). Spomnimo se še, da je True
isto kot 1.
Če je seznam večjih elementov enak s
, imamo return 1 - 0
,
če je enak t
, imamo return 0 - 1
, sicer return 0 - 0
.
Edini bug je, da bo funkcija za seznama [1, 2]
, [0, 2]
vrnila 1, čeprav bi morala 0, ker niso vsi elementi prvega strogo večji od
elementov drugega. Nič ni popolno.
Editor
Bodite pozorni na drugi if; tu so se na izpitu dogajale težke (in včasih tudi napačne) akrobacije. V drugi funkciji sem uporabil zip. Brez njega bi bilo potrebno uporabljati indekse.
Drugo funkcijo je seveda mogoče napisati tudi nekoliko krajše:
Največje število
Pa še vaja iz razredov in rekurzije. Mislim, da imate srečo, da je bilo oboje v isti nalogi; če bi bilo v dveh različnih, bi bili rezultati opazno slabši...
Gre pa tudi krajše.