Riešenie úloh 7. cvičenia


  1. Riešenie:

    def sucin(zoznam):
        vysl = 1
        for p in zoznam:
            vysl *= p
        return vysl
    

  1. Riešenie:

    def zostupne(zoznam):
        for i in range(1, len(zoznam)):
            if zoznam[i-1] < zoznam[i]:
                return False
        return True
    

  1. Riešenie:

    def postupnost(start, koniec, krok=1):
        vysl = []
        x = start
        while krok > 0 and x < koniec or krok < 0 and x > koniec:
            vysl.append(x)
            x += krok
        return vysl
    

  1. Riešenie:

    def sucet(zoznam1, zoznam2):
        vysl = []
        ix = min(len(zoznam1), len(zoznam2))
        for i in range(ix):
            vysl.append(zoznam1[i] + zoznam2[i])
        return vysl + zoznam1[ix:] + zoznam2[ix:]
    

  1. Riešenie:

    def nahodny_zoznam(n, od, do):
        vysl = []
        for i in range(n):
            vysl.append(random.randint(od, do))
        return vysl
    
    def histogram(zoznam):
        x, y = 10, 250
        sirka = 360 // len(zoznam)
        for hodnota in zoznam:
            farba = f'#{random.randrange(256**3):06x}'
            canvas.create_rectangle(x, y, x + sirka, y - hodnota, fill=farba)
            x += sirka
    

  1. Riešenie:

    def kresli_polygon(zoznam_x, zoznam_y):
        zoz = []
        for i in range(len(zoznam_x)):
            zoz.extend([zoznam_x[i], zoznam_y[i]])
        canvas.create_polygon(zoz, outline='black',
                              fill=f'#{random.randrange(256**3):06x}')
    

  1. Riešenie:

    def replace_novy(zoznam, co, zaco):
        vysl = []
        for prvok in zoznam:
            if prvok == co:
                prvok = zaco
            vysl.append(prvok)
        return vysl
    
    def replace(zoznam, co, zaco):
        for i, prvok in enumerate(zoznam):
            if prvok == co:
                zoznam[i] = zaco
    

  1. Riešenie:

    def dvojice(zoznam):
        i = 0
        while i < len(zoznam)-1:
            zoznam[i:i + 2] = [zoznam[i] + zoznam[i + 1]]
            i += 1
    

  1. Riešenie:

    def rozklad(cislo):
        vysl = []
        i = 2
        while cislo > 1:
            if cislo % i == 0:
                vysl.append(i)
                cislo //= i
            else:
                i += 1
        return vysl
    

  1. Riešenie:

    def stvorec(x, y, r, uhol):
        vysl = []
        for u in range(uhol, 360 + uhol, 90):
            vysl.append(x + r * cos(radians(u)))
            vysl.append(y + r * sin(radians(u)))
        return vysl
    

  1. Riešenie:

    def posun(zoznam):
        zoznam.append(zoznam.pop(0))
    

  1. Riešenie:

    import random
    
    def dve_kocky(pocet):
        zoz = [0] * 13
        for i in range(pocet):
            zoz[random.randint(1, 6) + random.randint(1, 6)] += 1
        return zoz
    

  1. Riešenie:

    def prerob(cislo):
        cislo = str(cislo)
        vysl = []
        while cislo:
            vysl.append(cislo[-3:])
            cislo = cislo[:-3]
        return '_'.join(reversed(vysl))
    

  1. Riešenie:

    def anagram(s1, s2):
        s1 = sorted(s1.replace(' ', '').lower())
        s2 = sorted(s2.replace(' ', '').lower())
        return s1 == s2