Recursos-LCC

Um arquivo de todo material que consegui reunir, pertinente ao curso de LCC da UM.

View on GitHub

LA2 | Torneio 1 (2022/2023) | Área


"""
Defina uma função que calcula a área de uma figura desenhada com pecas
lineares. A função recebe uma lista de pecas, onde para cada peça se indica
a sua localização no plano, a orientação (True significa horizontal e False
vertical), e a dimensão.
"""

def area(pecas):    # pensa nas peças como quadrados 2D, em cada um os lados medem 1 valor (e só percorre o quadrante dos valores positivos)
    loc = []                # array temporário onde iremos por os tuplos das coordenadas x/y onde os quadrados se encontram
    for x,y,o,a in pecas:       # x,y - localização inicial no eixo x/y  |  o - orientação (True = Horizontal, False = Vertical)  |  a - área, quantos quadrados são
        if o==True:
            for i in range(0,a):
                loc.append( (x+i,y) )
        elif o==False:
            for j in range(0,a):
                loc.append( (x,y+j) )
    
    loc = list(dict.fromkeys(loc))          # este comando remove quaisquer elementos repetidos do array - temos isto pois algumas peças vão-se interceptar no "gráfico", assim repetindo coordenadas x/y
    res = len(loc)                          # agora contamos o número total de quadrados, essa é a "área" pedida
    
    return res


Testes

# 1
sets = [{1,2,3},{2,4},{3,4},{4,5}]
> Resultado = 6

# 2
pecas = [(0,1,True,3),(1,0,False,3)]
> Resultado = 5

retroceder