Saltar a contenido

Parcialito 2 - 2023a - Tema 1#

Todas las funciones desarrolladas deben tener su respectivo typehint y deben seguir buenas prácticas de programación.

Ejercicio 1#

Se tiene una lista que contiene diccionarios con las claves “id”, “descripcion”, “costo” y “stock”. Un ejemplo de listas de este tipo es el siguiente:

[{"id": 4, "descripcion": "Girgola", "costo": 449.0, "stock": 324},
 {"id": 2, "descripcion": "Espinaca", "costo": 799.0, "stock": 3501},
 {"id": 3, "descripcion": "Champignon", "costo": 629.0, "stock": 723},
 {"id": 12, "descripcion": "Kiwi", "costo": 1299.0, "stock": 150},
 {"id": 10, "descripcion": "Mandarina Okitsu", "costo": 389.0, "stock": 430},
 {"id": 11, "descripcion": "Mandarina Nova", "costo": 389.0, "stock": 900}]
  • Implementar una función que tome una lista con este formato y la ordene por id.
  • Implementar una función que tome una lista con este formato y la ordene por costo.

No está permitido usar la función built-in sorted, ni el método sort de las listas, ni el algoritmo bubblesort.

Ejercicio 2#

Dada una de las listas que se obtiene como resultado de aplicar una de las funciones desarrolladas en el punto anterior, implementar una función que dado un id de un producto nos devuelva su precio, siendo el precio igual al costo + 20%. El peor caso de la función debe resolverse en un tiempo mejor que \(\mathcal{O}(n)\), donde \(n\) es la cantidad de elementos en la lista.

Justifique cuál de las funciones desarrolladas en el primer ejercicio convendría utilizar para ordenar la lista original.

Ejercicio 3#

Queremos calcular el precio total de un paquete que puede contener productos y/u otros paquetes en su interior, asumiendo que la información de cada producto se puede obtener de una lista como la del ejercicio 1. Por ejemplo, supongamos que tenemos un paquete A que contiene en su interior el paquete B y un producto con id 4. A su vez, el paquete B contiene los productos con id 10 y 12, como se muestra en el siguiente esquema.

paquete A:
+----------------------------------+
|  paquete B:                      |
|  +-------------------+    +---+  |
|  |  +----+   +----+  |    | 4 |  |
|  |  | 10 |   | 12 |  |    +---+  |
|  |  +----+   +----+  |           |
|  +-------------------+           |
+----------------------------------+

Esto se representa en nuestro programa con la siguiente lista: paquete = [ [10, 12] , 4 ].

El paquete A tiene un precio igual a \(2564.4\), que se obtiene como la suma de los precios de todos los productos contenidos en total: \(\text{precio\_total} = 389 * 1.2 + 1299 * 1.2 + 449 * 1.2\).

Implementar una función recursiva que calcule el precio total de un paquete cualquiera. El precio de un paquete vacío es 0.

Ayuda: considere el uso de la función built-in type.