# Naloga 1: Blagajna

def blagajna(s, caka=0):
    if not s:
        return caka
    if s[0] == "+":
        caka += 1
    else:
        caka -= 1
    return max(caka, blagajna(s[1:], caka))


# Naloga 2: Kockarji
#
# Tule potrebujemo dve pomožni funkciji: ena sestavi seznam, koliko šestic je
# vrgel kateri kockar. Druga v tem seznamu poišče tistega, ki jih je vrgel
# največ.
# "Prava" funkcija smo pokliče tidve funkciji.

def prestej_sestice(s, n, kdo):
    if not s:
        return [0] * n
    sestic = prestej_sestice(s[1:], n, (kdo + 1) % n)
    if  s[0] == 6:
        sestic[kdo] += 1
    return sestic

def najvecji(s, i):
    if not s:
        return 0, 0
    koliko, kdo = najvecji(s[1:], i + 1)
    if s[0] > koliko:
        return s[0], i
    else:
        return koliko, kdo

def kockarji(s, n):
    return najvecji(prestej_sestice(s, n, 0), 1)[1]



# 3. naloga

def enaka(s, t):
    return not s and not t or s and t and s[0] == t[0] and enaka(s[1:], t[1:])



# 4. naloga
#
# Tule obakrat potrebujemo pomožno funkcijo. Rekurzija ne zna dobro hoditi po
# slovarjih, zato napišemo funkcijo vsi_deli_r, ki namesto slovarja potrebnih
# reči dobi seznam parov (reč, količina). "Prava" funkcija pokliče to funkcijo.

def vsi_deli_r(skatla, potrebno):
    return (not potrebno  # ne potrebujemo nicesar vec
            or potrebno[0][0] in skatla # naslednja stvar je v skatli
              and skatla[potrebno[0][0]] >= potrebno[0][1] # v dovoljsnji kolicini
            and vsi_deli_r(skatla, potrebno[1:])) # pa tudi vsi drugi deli so v skatli

def vsi_deli(skatla, potrebno):
    return vsi_deli_r(skatla, list(potrebno.items()))


def kaj_manjka_r(skatla, potrebno):
    if not potrebno:
        return {}
    manjka = kaj_manjka_r(skatla, potrebno[1:])
    rec, kolicina = potrebno[0]
    if rec in skatla:
        if skatla[rec] < kolicina:
            manjka[rec] = kolicina - skatla[rec]
    else:
        manjka[rec] = kolicina
    return manjka

def kaj_manjka(skatla, potrebno):
    return kaj_manjka_r(skatla, list(potrebno.items()))
Zadnja sprememba: četrtek, 5. marec 2015, 21.39