Otro ejercicio de entrevista: dado una lista de valores determinar qué poligono se forma.

19/08/2017 | Autor: Eduardo Enriquez

Un ejercicio que me han tomado fue decir si unos valores dados formaban un cuadrado, un rectangulo o ninguna de las opciones anteriores. Para esto nos daban una lista con cuatro valores y con ellos había que decir a qué figura pertenecia.

Aquí va el código:

def calculate_shape(shapes):
    squares = 0
    rects = 0
    neithers = 0

    for values in shapes:
        more_values = len(values) != 4
        negative_values = any(item <= 0 for item in values)

        if more_values or negative_values:
            neithers += 1
            continue
        
        sqr_flag = len(set(values)) == 1

        if sqr_flag:
            squares += 1
            continue

        rect_flag = (values[0] == values[2]) and (values[1] == values[3])

        if rect_flag:
            rects += 1
            continue

        neithers += 1

    return {
        'squares': squares,
        'rect': rects,
        'neithers': neithers,
    }

def main():
    polygons = [
        [ 100, 100, 100, 100], # sqr
        [ 10, 10, 10, 10],     # sqr
        [ 1.5, 1.5, 1.5, 1.5], # sqr
        [ 10.5, 10, 10.5, 10], # req
        [ 100, 200, 100, 200], # req
        [],                    # nei
        [ 1, 2, 3, 4],         # nei
        [ -1, -2, -1, -2],     # nei
        [ 1, 0, 1, 0],         # nei
        [ 100, 120, 100, 50],  # nei
        [ -100, 20, -100, 10], # nei
        [ 100, 200, 100],      # nei
        [ 10, 20, 10, 50, 30], # nei
        [ 1.1, 2.2, 1, 2],     # nei
    ]
    result = {
        'squares': 3,
        'rect': 2,
        'neithers': 9,
    }

    response = calculate_shape(polygons)
    print("Are equal: %s" % (result == response))
    print(response)
    print(result)


if __name__ == '__main__':
    main()

 


Tags