Saltar a contenido

Parcialito 2 - 2024b - Tema 1#

Ejercicio 1#

En un archivo de CSV, plantas.csv, se posee información sobre un inventario de plantas en un vivero. Cada línea del archivo contiene datos de una planta en el siguiente formato: Nombre, Altura y Cantidad disponible. Un ejemplo de este archivo podría ser:

Nombre,Altura,Cantidad
Rosa,1.5,9
Girasol,3.0,6
Cactus,6.0,4

Se requiere implementar un programa, tal que su código principal realice las siguientes tareas:

  1. Leer el archivo CSV y construir una lista de diccionarios, donde cada diccionario represente una planta con sus respectivos atributos. Para el ejemplo anterior, la estructura resultante sería:
[
    {"Nombre": "Rosa", "Altura": 1.5, "Cantidad": 9},
    {"Nombre": "Girasol", "Altura": 3.0, "Cantidad": 6},
    {"Nombre": "Cactus", "Altura": 6.0, "Cantidad": 4}
]
  1. Ordenar la lista de diccionarios (suponga de tamaño arbitrario) según el criterio especificado por el usuario (por ejemplo, “Nombre”, “Altura” o “Cantidad”).

  2. Solicitar al usuario el nombre de una planta y mostrar por pantalla en qué posición de la lista quedó ubicada luego del ordenamiento. En caso de no existir, debe informarlo.

El programa debe estar modularizado convenientemente y definir al menos un Docstring para algunas de las funciones que implemente.

Ejemplo de ejecución:

Ingrese nombre del archivo: plantas.csv
Ingrese criterio de ordenamiento: Altura

Ingrese nombre de una planta: Cactus
La planta quedó ubicada en la posición 2

Ejercicio 2#

  1. Sea una matriz cuadrada de números, de tamaño n×n (siendo n un tamaño arbitrario). Se requiere obtener la suma de todos los elementos de la matriz. Por ejemplo:
[[1, 3], [4, 6]]                  # suma = 1 + 3 + 4 + 6 = 14
[[1, 2, 3], [1, 0, 2], [3, 2, 6]] # suma = 1 + 2 + 3 + 1 + 0 + 2 + 3 + 2 + 6 = 20

Implemente una función sumar_matriz_rec(A:list[list]) -> int|float, que resuelva el problema en forma recursiva. La función debe recibir la matriz (una lista de listas) y retornar el valor de la suma total de todos sus elementos. Ayuda: se permite el uso de funciones built-in o ciclos (no más de uno) si lo considera necesario, pero la lógica principal de la solución debe ser recursiva para que sea válido el ejercicio.

  1. Para resolver el problema anterior, suponga que se propone una solución puramente iterativa (usando solo ciclos). A continuación se muestra un posible código en Python que resuelve este problema:
def sumar_matriz_iter(A: list[list]) -> int|float:
    suma = 0
    for fila in A:
        for col in fila:
            suma += col
    return suma

Para esta función, determine la complejidad computacional mediante la notación Big-O justificando su respuesta.