Rešitve s komentarji
Rešitve
Blagajna
Z zanko gremo čez niz in spremljamo dolžino vrste: vsakič, ko vidimo +, zabeležimo, da je vrsta za 1 daljša, sicer pa je za 1 krajša. Kadar se vrsta podaljša, še preverimo, ali je daljša od najdaljše doslej in si jo, če je tako zapomnimo. Na koncu vrnemo dolžino najdaljše vrste.
Kockarji
Potrebovali bomo tabelico, v katero bomo šteli, kolikokrat je kdo vrgel
šestico. V začetku bo vsebovala n ničel, nato bomo šli prek niza
in vsakič, ko vidimo šestico, povečali vsebino ustreznega polja za 1. Katero
pa je ustrezno polje? Preprosto, izračunamo ostanek po deljenju z
n. Če imamo tri kockarje, se elementi 0, 3, 6, 9 nanašajo na
ničtega, 1, 4, 7, 10 na prvega, 2, 5, 8, 11 na drugega.
Ko je tabelica sestavljena, poiščemo indeks elementa z največjo vrednostjo. Kot rezultat vrnemo številko povečano za 1, saj naloga pravi, da je prvi kockar kockar 1 in ne kockar 0.
Enakost seznamov
Spomnimo se, da so prazni seznami neresnični, neprazni pa resnični. Funkcijo potem napišemo tako, da prevedemo opis naloge v Python.
Gremo bolj počasi? Prav. Naloga pravi: Dva seznama sta enaka, če sta oba prazna ali pa sta oba neprazna in imata enaka prva elementa in sta enaka tudi ostanka seznama (vse razen prvega elementa).
| sta oba prazna: | not s and not t |
| sta oba neprazna: | s and t |
| imata enaka prva elementa: | s[0] == t[0] |
| sta enaka tudi ostanka seznama: | enaka(s[1:], t[1:]) |
Tole je natančno tisto, kar smo napisali v return, samo še
or in and postavimo vmes.
Lego
Sprehoditi se moramo čez slovar potrebnih reči. Da dobimo pare
(stvar, količina) bomo uporabili metodo items() (šlo pa bi seveda
tudi brez nje. Za vsako stvar pogledamo, ali je v škatli in ali je je dovolj.
Če je ni ali če je ni dovolj, vrnemo False. Sicer pa pustimo
zanko, da se izteče do konca in če se, na koncu vrnemo True.
Slovar manjkajočih stvari naredimo na zelo podoben način: gremo čez vse potrebno. Če je nekaj v škatli, vendar v premajhni količini, zabeležimo, koliko te stvari še potrebujemo (toliko, kolikor je je potrebno minus toliko, kolikor je dobimo v škatli. Če pa nečesa ni v škatli, potrebujemo še vse.
Gre pa tudi krajše - če vemo, kaj počne metoda get.
Nalogo je seveda mogoče rešiti tudi tako, da najprej napišemo drugo funkcijo in jo kličemo iz prve:
Lego - objektni
O tem, kako to spraviti v objekte, pa nimamo kaj dosti povedati. Konstruktor
bo shranil vsebino škatle v self.vsebina. Funkciji iz prejšnje
naloge spremenimo v metodi, argument skatla zamenjamo s
self in znotraj funkcij gledamo self.vsebina.