コード例 #1
0
def pregled_po_nivojih(zacetno_drevo):
    '''pregleda drevo po nivojih'''
    vrsta = Vrsta([zacetno_drevo])
    while not vrsta.prazna():
        drevo = vrsta.zacetek()
        if not drevo.prazno:
            vrsta.vstavi(drevo.levo)
            vrsta.vstavi(drevo.desno)
            yield drevo.podatek
        vrsta.odstrani()
コード例 #2
0
def uredi_s_vrsto(vrsta):
    v = Vrsta()
    if not vrsta.prazna():
        vrsta.vstavi('Straža')
        while vrsta.zacetek() != 'Straža':
            mini = vrsta.zacetek()
            while not vrsta.prazna() and vrsta.zacetek() != 'Straža':
                mini = min(mini, vrsta.zacetek())
                vrsta.odstrani()
            v.vstavi(mini)
    return v
コード例 #3
0
ファイル: druzabna_vrsta.py プロジェクト: AbramicK16/Ra-1
class DruzabnaVrsta:
    def __init__(self):
        self.vrsta = Vrsta()
        self._slovarVrst = dict()

    def dodaj_prisleka(self, ime, skupina):
        """doda osebo z imenom imem ki pripada skupini skupina"""
        if skupina not in self._slovarVrst.keys():
            self._slovarVrst[skupina] = Vrsta()
            self.vrsta.vstavi(skupina)
        self._slovarVrst[skupina].vstavi(ime)
        return True

    def ime_prvega(self):
        '''vrne ime osebe, ki je trenutno prva v vrsti'''
        prva = self._slovarVrst[self.vrsta.zacetek()]
        return prva.zacetek()

    def postrezi(self):
        '''iz vrste odstrani prvega'''
        odstraniPrvega = self.vrsta.zacetek()
        vrsta = self._slovarVrst[odstraniPrvega]
        vrsta.odstrani()
        while vrsta.prazna() or (odstraniPrvega
                                 not in self._slovarVrst.keys()):
            self._slovarVrst.pop(odstraniPrvega)
            self.vrsta.odstrani()
            if self.vrsta.prazna():
                return
            odstraniPrvega = self.vrsta.zacetek()
            vrsta = self._slovarVrst[odstraniPrvega]
        return
コード例 #4
0
def vzemi_vrsta(vrsta, kolicina):
    '''iz vrste vzame število izdelkov ali vrže izjemo'''
    vr = Vrsta()
    odv_kol = 0
    while odv_kol < kolicina and not vr.prazna():
        vr.vstavi(vrsta.zacetek())
        vrsta.odstrani()
        odv_kol += vr.zacetek()
    if odv_kol > kolicina:
        vrsta.vstavi(odv_kol-kolicina)
    elif odv_kol < kolicina:
        while not vr.prazna():
            vrsta.vstavi(vr.zacetek())
            vr.odstrani()
        raise IndexError
コード例 #5
0
ファイル: druzabna_vrsta.py プロジェクト: AbramicK16/Ra-1
 def dodaj_prisleka(self, ime, skupina):
     """doda osebo z imenom imem ki pripada skupini skupina"""
     if skupina not in self._slovarVrst.keys():
         self._slovarVrst[skupina] = Vrsta()
         self.vrsta.vstavi(skupina)
     self._slovarVrst[skupina].vstavi(ime)
     return True
コード例 #6
0
def prestej_elemente(v):
    pomozna = Vrsta()
    stevec = 0
    while not v.prazna():
        pomozna.vstavi(v.zacetek())
        stevec += 1
        v.odstrani()
    while not pomozna.prazna():
        v.vstavi(pomozna.zacetek())
        pomozna.odstrani()
    return stevec
コード例 #7
0
def odstrani_pogojno(v, p):
    pomozna = Vrsta()
    while not v.prazna():
        if p(v.zacetek()):
            v.odstrani()
            continue
        pomozna.vstavi(v.zacetek())
        v.odstrani()
    while not pomozna.prazna():
        v.vstavi(pomozna.zacetek())
        pomozna.odstrani()
コード例 #8
0
def prestej_pogojno(v, p):
    pomozna = Vrsta()
    stevec = 0
    while not v.prazna():
        if p(v.zacetek()):
            stevec += 1
        pomozna.vstavi(v.zacetek())
        v.odstrani()
    while not pomozna.prazna():
        v.vstavi(pomozna.zacetek())
        pomozna.odstrani()
    return stevec
コード例 #9
0
def moc_najmocnejsega_v_vrsti(vrs):
    '''Vrne moč otroka, ki ima v vrsti največjo moč'''
    vr = Vrsta()
    st = 0
    naj_st = 0
    while not vrs.prazna():
        st = vrs.zacetek()[1]
        naj_st = max(naj_st, st)
        vr.vstavi(vrs.zacetek())
        vrs.odstrani()
    while not vr.prazna():
        vrs.vstavi(vr.zacetek())
        vr.odstrani()
    return naj_st
コード例 #10
0
def odstrani_ntega(v, n):
    pomozna = Vrsta()
    stevec = 0
    while not v.prazna():
        if stevec == n:
            v.odstrani()
            stevec += 1
            continue
        stevec += 1
        pomozna.vstavi(v.zacetek())
        v.odstrani()
    while not pomozna.prazna():
        v.vstavi(pomozna.zacetek())
        pomozna.odstrani()
コード例 #11
0
def poisci_sobo(skladisce, pot, smer=None):
    '''Vrne iskano sobo ter skladišče s po potrebi dodanimi praznimi sobami.'''
    if skladisce.prazno:
        if smer == 'L':
            skladisce = Drevo(Vrsta())
        elif smer == 'D':
            skladisce = Drevo(Sklad())
    if pot == '':
        return skladisce, skladisce.podatek
    elif pot[0] == 'L':
        levo_skladisce, soba = poisci_sobo(skladisce.levo, pot[1:], smer='L')
        return Drevo(skladisce.podatek, levo=levo_skladisce, desno=skladisce.desno), soba
    elif pot[0] == 'D':
        desno_skladisce, soba = poisci_sobo(skladisce.desno, pot[1:], smer='D')
        return Drevo(skladisce.podatek, levo=skladisce.levo, desno=desno_skladisce), soba
コード例 #12
0
class DruzabnaVrsta:
    def __init__(self):
        self._ustanove = Vrsta()
        self._slovar_ljudi = dict()  #  {ustanova: Vrsta(osebe)}

    def dodaj_prisleka(self, ime, ustanova):
        if ustanova in self._slovar_ljudi.keys():
            self._slovar_ljudi[ustanova].vstavi(ime)
        else:
            self._ustanove.vstavi(ustanova)
            self._slovar_ljudi[ustanova] = Vrsta([ime])

    def ime_prvega(self):
        return self._slovar_ljudi[self._ustanove.zacetek()].zacetek()

    def postrezi(self):
        oseba = self.ime_prvega()
        self._slovar_ljudi[self._ustanove.zacetek()].odstrani()
        if self._slovar_ljudi[self._ustanove.zacetek()].prazna():
            del self._slovar_ljudi[self._ustanove.zacetek()]
            self._ustanove.odstrani()
コード例 #13
0
    def dodaj_prisleka(self, ime, skupina):
        '''doda prišleka, upošteva skupino'''
        pomozna_vrsta = Vrsta()
        zadnji_v_vrsti = None
        st = 0
        while not self.vrsta.prazna():
            ime1, skupina1 = self.vrsta.zacetek()
            self.vrsta.odstrani()
            pomozna_vrsta.vstavi((ime1, skupina1))
            st += 1
            if skupina == skupina1:
                zadnji_v_vrsti = st
        st = 0
        while not pomozna_vrsta.prazna():
            ime1, skupina1 = pomozna_vrsta.zacetek()
            pomozna_vrsta.odstrani()
            self.vrsta.vstavi((ime1, skupina1))
            st += 1
            if st == zadnji_v_vrsti:
                self.vrsta.vstavi((ime, skupina))

        if zadnji_v_vrsti is None:
            self.vrsta.vstavi((ime, skupina))
コード例 #14
0
 def dodaj_prisleka(self, ime, ustanova):
     if ustanova in self._slovar_ljudi.keys():
         self._slovar_ljudi[ustanova].vstavi(ime)
     else:
         self._ustanove.vstavi(ustanova)
         self._slovar_ljudi[ustanova] = Vrsta([ime])
コード例 #15
0
 def __init__(self):
     self._ustanove = Vrsta()
     self._slovar_ljudi = dict()  #  {ustanova: Vrsta(osebe)}
コード例 #16
0
ファイル: sladoled.py プロジェクト: AbramicK16/Ra-1
def kdaj_pridem_na_vrsto(otroci):
    '''vrne nov seznam, ki vsebuje števila od 1 naprej'''
    ind = 0
    vrsta = Vrsta()
    for moc in otroci:
        vrsta.vstavi((moc, ind))
        ind += 1
    novSeznam = list()
    for i in range(ind):
        novSeznam.append(0)
    stOtroka = 1  #številke so od 1 do i
    while not vrsta.prazna():
        najmocnejsi = (
            0, 0)  #otrok z najmočnejšo močjo je na začetku kar prvi otrok
        vrsta.vstavi(None)
        while vrsta.zacetek(
        ) != None:  #pregledamo celo vrsto, dokler ne pridemo do zadnjega, ki ima najmanjši ind
            prviOtrok = vrsta.zacetek()
            vrsta.odstrani()
            if prviOtrok[0] > najmocnejsi[0]:
                najmocnejsi = prviOtrok  #dobimo novega otroka z največjo močjo
            vrsta.vstavi(prviOtrok)
        vrsta.odstrani()
        while vrsta.zacetek() != najmocnejsi:
            prviOtrok = vrsta.zacetek()
            vrsta.odstrani()
            vrsta.vstavi(prviOtrok)
        vrsta.odstrani()
        novSeznam[najmocnejsi[1]] = stOtroka
        stOtroka += 1
    return novSeznam
コード例 #17
0
def kdaj_pridem_na_vrsto(otrok):
    '''Sprejme seznam otrok- "vrsto" pred kioskom in
    vrne seznam, v katerem je izračunano, koliko
    časa bo moral otrok čakati na sladoled'''
    sez = [0] * len(otrok)
    vrsta = Vrsta()
    cas = 1
    for i, el in enumerate(otrok):
        vrsta.vstavi((i, el))
    while not vrsta.prazna():
        st = vrsta.zacetek()[1]
        moč = moc_najmocnejsega_v_vrsti(vrsta)
        if st < moč:
            vrsta.vstavi(vrsta.zacetek())  #vstavi na konec
            vrsta.odstrani()
        else:
            sez[vrsta.zacetek()[0]] = cas
            vrsta.odstrani()
            cas += 1
    return sez
コード例 #18
0
def pregled_po_nivojih(d):
    '''Vrača pregled dvojiškega drevesa po nivojih.'''
    vrsta = Vrsta()
    vrsta.vstavi(d)
    while not vrsta.prazna():
        poddrevo = vrsta.zacetek()
        vrsta.odstrani()
        if not poddrevo.prazno:
            yield poddrevo.podatek
            vrsta.vstavi(
                poddrevo.levo
            )  # Vstavimo v vrsto, naprej levo in nato desno poddrevo
            vrsta.vstavi(poddrevo.desno)
コード例 #19
0
 def __init__(self):
     self._pes = Vrsta()
     self._macka = Vrsta()
     self._cas = 0
コード例 #20
0
class Zavetisce():
    def __init__(self):
        self._psi = Vrsta()
        self._macki = Vrsta()
        self._cas = 0

    def sprejmi(self, ime, vrsta):
        if vrsta == 'pes':
            self._psi.vstavi((ime, self._cas))
        else:
            self._macki.vstavi((ime, self._cas))
        self._cas += 1

    def oddaj_psa(self):
        if self._psi.prazna():
            return None
        oddan = self._psi.zacetek()[0]
        self._psi.odstrani()
        return oddan

    def oddaj_macko(self):
        if self._macki.prazna():
            return None
        oddan = self._macki.zacetek()[0]
        self._macki.odstrani()
        return oddan

    def oddaj_zival(self):
        if self._macki.prazna():
            return self.oddaj_psa()
        if self._psi.prazna():
            return self.oddaj_macko()
        return self.oddaj_psa() if self._psi.zacetek(
        )[1] < self._macki.zacetek()[1] else self.oddaj_macko()
コード例 #21
0
ファイル: druzabna_vrsta.py プロジェクト: AbramicK16/Ra-1
 def __init__(self):
     self.vrsta = Vrsta()
     self._slovarVrst = dict()
コード例 #22
0
ファイル: sladoled.py プロジェクト: Zakrajsk/Racunalnistvo_1
def kdaj_pridem_na_vrsto(otroci):
    """Vrne tabelo, ki predstavlja zaporedje kako so otroci kupovali sladoled"""
    vrsta = Vrsta()
    for i, otrok in enumerate(otroci):
        vrsta.vstavi((otrok, i))
コード例 #23
0
 def __init__(self):
     self.vrsta = Vrsta()
コード例 #24
0
    pomozni_sklad = Sklad()
    for _ in range(k):
        pomozni_sklad.vstavi(vrsta.prvi())
        vrsta.izbrisi()

    while not pomozni_sklad.prazen():
        vrsta.dodaj(pomozni_sklad.vrh())
        pomozni_sklad.odstrani()

    for _ in range(vrsta.velikost() - k):
        vrsta.dodaj(vrsta.prvi())
        vrsta.izbrisi()


primer = Vrsta()
for el in range(2, 13, 2):
    primer.dodaj(el)

print('Primer')
print(primer)
print('-----------------------------------------------')
print('obrni_k_elementov(primer, 4)')
obrni_k_elementov(primer, 4)
print(primer)
print('-----------------------------------------------')

primer2 = Vrsta()
for el in range(-30, 30, 10):
    primer2.dodaj(el)
コード例 #25
0
 def __init__(self):
     self._psi = Vrsta()
     self._macki = Vrsta()
     self._cas = 0
コード例 #26
0
class DruzabnaVrsta:
    def __init__(self):
        self.vrsta = Vrsta()

    def dodaj_prisleka(self, ime, skupina):
        '''doda prišleka, upošteva skupino'''
        pomozna_vrsta = Vrsta()
        zadnji_v_vrsti = None
        st = 0
        while not self.vrsta.prazna():
            ime1, skupina1 = self.vrsta.zacetek()
            self.vrsta.odstrani()
            pomozna_vrsta.vstavi((ime1, skupina1))
            st += 1
            if skupina == skupina1:
                zadnji_v_vrsti = st
        st = 0
        while not pomozna_vrsta.prazna():
            ime1, skupina1 = pomozna_vrsta.zacetek()
            pomozna_vrsta.odstrani()
            self.vrsta.vstavi((ime1, skupina1))
            st += 1
            if st == zadnji_v_vrsti:
                self.vrsta.vstavi((ime, skupina))

        if zadnji_v_vrsti is None:
            self.vrsta.vstavi((ime, skupina))

    def ime_prvega(self):
        if not self.vrsta.prazna():
            return self.vrsta.zacetek()[0]

    def postrezi(self):
        if not self.vrsta.prazna():
            self.vrsta.odstrani()
コード例 #27
0
class Zavetisce:
    def __init__(self):
        self._pes = Vrsta()
        self._macka = Vrsta()
        self._cas = 0

    def sprejmi(self, ime, vrsta):
        '''evidentira novo zival z imenom IME,
        ki je pripadnik neke vrste vrsta'''
        if vrsta == 'pes':
            self._pes.vstavi((ime, self._cas))
        else:
            self._macka.vstavi((ime, self._cas))
        self._cas += 1

    def oddaj_psa(self):
        '''vrne ime psa, ki je na vrsti za posvojitev'''
        if self._pes.prazna():
            return None
        oddamoPsa = self._pes.zacetek()
        self._pes.odstrani()
        return oddamoPsa[0]

    def oddaj_macko(self):
        '''vrne ime macke, ki je na vrsti za posvojitev'''
        if self._macka.prazna():
            return None
        oddamoMacko = self._macka.zacetek()
        self._macka.odstrani()
        return oddamoMacko[0]

    def oddaj_zival(self):
        '''v posvojitev da tisto žival, ki je prva na vrsti'''
        if self._macka.prazna():
            return self.oddaj_psa()
        elif self._pes.prazna():
            return self.oddaj_macko()
        else:
            macka = self._macka.zacetek()
            pes = self._pes.zacetek()
            if macka[1] < pes[1]:
                return self.oddaj_macko()
            else:
                return self.oddaj_psa()