Recursos-LCC

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

View on GitHub

LA2 | Torneio 2 (2022/2023) | Perímetro


'''
Implemente uma função que calcula o perímetro externo de uma figura.
A figura está desenhada usando o símbolo '#' num mapa quadriculado 
onde cada quadrícula tem dimensão 1x1. Assuma que a figura nunca 
irá estar encostada às margens do mapa.
'''

def perimetro(figura):
    if not figura:
        return 0

    rows = len(figura)
    cols = len(figura[0])

    perimeter = 0

    for row in range(rows):
        for col in range(cols):
            if figura[row][col] == '#':
                if row == 0 or figura[row - 1][col] != '#':  # Upper neighbor
                    perimeter += 1
                if row == rows - 1 or figura[row + 1][col] != '#':  # Lower neighbor
                    perimeter += 1
                if col == 0 or figura[row][col - 1] != '#':  # Left neighbor
                    perimeter += 1
                if col == cols - 1 or figura[row][col + 1] != '#':  # Right neighbor
                    perimeter += 1

    return perimeter


Testes

# 1
figura = [".......",
        "...#...",
        "..###..",
        ".#####.",
        "..###..",
        "...#...",
        "......."]
> Resultado = 20

# 2
figura = [".......",
        "...#...",
        "..#.#..",
        ".#...#.",
        "..#.#..",
        "...#...",
        "......."]
> Resultado = 20

retroceder