Vraževerje
Funkcije v tej nalogi morajo biti rekurzivne (čeprav bi se jih seveda dalo napisati tudi brez rekurzije). Torej: nobenih zank, nobenih izpeljanih seznamov, generatorjev ali pomožnih funkcij. Vsaka funkcija obravnava robne pogoje in, če še ni "na robu", rekurzivno kliče samo sebe.
Menda prinaša srečo, če se sesalec vrača na izhodiščno polje. Napišite funkcijo
vrnitve(pot), ki vrne število elementov(0, 0)v podani poti.Klic
vrnitve([])vrne 0. Klicvrnitve([(0, 0), (1, 0), (0, 0)])vrne 2.Kot je znano, tudi sesalci -- podobno kot črne mačke -- prinašajo nesrečo. Črna mačka prinese nesrečo, če prečka cesto, sesalec pa, če se znajde na diagonali. Vendar: sesalec prinese nesrečo le, če se na diagonali znajde liho-krat.
Napišite funkcijo
sodo_diagonal(pot), ki vrneTrue, čepotvsebuje sodo število elementov z enakima koordinatama, inFalsesicer.Klic
sodo_diagonal([(0, 0), (0, 1), (0, 2), (2, 2), (2, 3)])vrneTrue, saj seznam vsebuje dve (torej: sodo število) diagonalnih polj (namreč:(0, 0)in(2, 2)). Klicsodo_diagonal([(0, 0), (0, 1), (0, 2), (2, 2), (2, 3), (3, 3)])vrneFalse, saj seznam vsebuje tri (torej: liho število) diagonalnih polj (namreč:(0, 0),(2, 2)in(3, 3)).Namig: če je trenutno polje diagonalno, bomo vrnili
True, če je ostanek ...? Če pa trenutno polje ni diagonalno, bomo vrniliTrue, če je ostanek ...?Vemo tudi, da je trinajst nesrečna številka, sploh, če se pojavi prevečkrat.
Napišite funkcijo
trinajst(pot, n), ki vrneTrue, če se sesalec največ n-krat nahaja v stolpcu 13 (torej: če je vpotnajvečnpolj, katerih prva koordinata je 13) inFalse, če se v trinajstem stolpcu nahodi več kot n-krat.Namig: če je trenutno polje v 3.
Testi
- 31. marec 2026, 17:52