import math

def vyrez(zoznam):
    ''' Odstráni nulové hodnoty na začiatku a na konci zoznamu.

    :param zoznam: obraz na 10-miestnom diódovom displeji
    :type zoznam: list[int]
    :return: obraz na 10-miestnom diódovom displeji orezaný o nesvietiace diódy na jeh okrajoch
    :rtype: list[int]
    '''
    i = 0
    while i < len(zoznam) and zoznam[i] == 0:
        i += 1
    j = len(zoznam) - 1
    while j >= 0 and zoznam[j] == 0:
        j -= 1
    return zoznam[i:j+1] if i <= j else []


def zoom(zoznam, faktor):
    ''' Zväčšenie alebo zmenšenie zoznamu hodnot.

    :param zoznam: obraz na 10-miestnom diódovom displeji
    :type zoznam: list[int]
    :param faktor: zväčšenie alebo zmenšenie obrazu na displeji
    :type faktor: int
    :return: zväčšený/zmenšený obraz na displeji
    :rtype: list[int]
    '''
    if faktor > 0:
        novy = []
        for i in range(len(zoznam)):
            for _ in range(faktor):
                novy.append(zoznam[i])
        while len(novy) > 10:
            novy = novy[1:-1]
        return novy

    elif faktor < 0:
        faktor = abs(faktor)
        novy = []
        for i in range(0, len(zoznam), faktor):
            blok = zoznam[i:i+faktor]
            if blok:
                priemer = sum(blok) / len(blok)
                zaokruhlene = math.floor(priemer + 0.5)  # manuálne zaokrúhľovanie nahor
                novy.append(zaokruhlene)
        return novy

    else:
        return zoznam


def intenzita(zoznam, zmena):
    ''' Zmení intenzitu svietenia podľa zadanej hodnoty.

    :param zoznam: obraz na 10-miestnom diódovom displeji
    :type zoznam: list[int]
    :param zmena: úroveň zmeny intenzity svietenia
    :type zmena: int
    :return: obraz na dispelji so zmenenou intenzitou svietenie
    :rtype: list[int]
    '''
    vysledok = []
    if zmena >= 0:
        for hodnota in zoznam:
            nova = hodnota * zmena
            if nova > 255:
                nova = 255
            vysledok.append(nova)
    else:
        delitel = abs(zmena)
        for hodnota in zoznam:
            nova = round(hodnota / delitel)
            vysledok.append(nova)
    return vysledok


print(vyrez([0, 0, 0, 5, 10, 5, 0, 0, 0, 0]))  # [5, 10, 5]
print(zoom([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], 4))  # [4, 5, 5, 5, 5, 6, 6, 6, 6, 7]
print(zoom([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], -4))  # [3, 7, 5]
print(intenzita([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], -2))  # [0, 1, 2, 2, 2, 3, 4, 4, 4, 0]
print(intenzita([1, 2, 3, 4, 5, 6, 7, 8, 9, 0], 50))  # [50, 100, 150, 200, 250, 255, 255, 255, 255, 0]