Rešitve s komentarji
Žabji skoki
S prvo funkcijo opravimo z nekaj if-i: žabo v začetku postavimo
na x = y = 0 in prehojena polja vsebujejo le to polje,
polja = {(0, 0)}. Nato gremo čez vse pare
smer, koliko ter spremenimo ustrezno koordinato za
koliko. Podobne reči smo počeli že večkrat; naša žaba je kot malo
manj sofisticirana želva, pa tudi z nekim pajkom je v sorodu.
Gre tudi brez if-ov, recimo takole:
Za drugo funkcijo le pokličemo prvo in za vsak par x, y preverimo ali je
slučajno izven predpisanih meja. Če je vrnemo False; če ni, ne
storimo ničesar in šele na koncu vrnemo True.
Za ugotavljanje največje razdalje bomo za vsak par x, y izračunali razdaljo in jo primerjali z največjo doslej.
Zadnja funkcija mora vrniti velikost preseka množice polj, prek katerih je šla žaba in množice polj, na katerih so muhe.
Naprej-nazaj
Spet le prepišemo definicijo iz naloge v rekurzivno funkcijo. Če si pomagamo še s slovarjem, ki ga je priporočila naloga, je še lažje.
Kaj pa se zgodi, ko če dobimo niz dolžine 1? Lahko tej primerjamo prvi in
zadnji element? Tudi takrat funkcija naredi natančno, kar mora: prvi in zadnji
element sta tedaj en in isti element. V tem primeru pogoj, da mora biti prvi
obratni kot zadnji, ne more biti izpolnjen in funkcija bo, kot tudi mora, za vse
nize dolžine 1 vrnila False.
Restavracija
Tokrat gremo prek vseh vrednosti v slovarju (narocila.values)
in seštevamo, kar najdemo v njih. Spet dokaj običajna naloga, le malo drugače
je obrnjena.
Žaba v razredu
Konstruktor mora shraniti koordinate (tega smo že zelo vajeni) in spremenljivko, v katero bo sešteval skupno pot. Vse metode so potem precej dolgočasne.