Estamos trabajando en un script para exportar datos de un sistema de información masivo y almacenarlos en una serie de dispositivos de almacenamiento externo para archivarlos como copias de seguridad.
Nuestro script genera múltiples archivos de datos cada uno posiblemente de distinto tamaño a los demás. Por otro lado, el dispositivo de almacenamiento tiene un límite de capacidad, sabemos que no todos los archivos van a caber en un solo dispositivo.
El problema que queremos resolver es el de seleccionar la mayor cantidad de archivos posibles para ser almacenados en un único dispositivo.
En términos computacionales establecemos el problema:
Problema: Dado un conjunto de archivos seleccionar la secuencia de cardinalidad máxima que pueda ser almacenada en un dispositivo de capacidad limitada.
-
Entradas: Un conjunto de archivos donde cada archivo tiene un tamaño asociado, y un dispositivo de almacenamiento externo con capacidad , tal que .
- En el archivo
almacenamiento.py
, implemente la funciónmaximizar(As, D)
con un algoritmo que resuelva el problema planteado utilizando la técnica de programación voraz en complejidad temporal .
Este proyecto requiere python3
. Asegúrese que esté instalado en su distribución de linux.
Si no lo ha hecho anteriormente, crear un ambiente virtual para las dependencias
python3 -m venv .venv
Activar el ambiente virtual
source .venv/bin/activate
Instalar las dependencias
pip3 install -r requirements.txt
Ejecutar las pruebas
pytest -s -W ignore::DeprecationWarning
- (5 pts) La producción cumple totalmente con los requerimientos solicitados.
- (3 pts) La producción cumple parcialmente con los requerimientos solicitados.
- (1 pts) La producción, en su mayor parte, no cumple con los requerimientos solicitados.
- (5 pts) El código pasa exitosamente todas las pruebas automatizadas.
- (3 pts) El código pasa la mayoría de las pruebas automatizadas.
- (1 pts) El código no pasa la mayoría de las pruebas automatizadas.
- (5 pts) El código implementa un algoritmo de programación voraz y corre en la complejidad temporal especificada.
- (3 pts) El código implementa un algoritmo de programación voraz pero no corre en la complejidad temporal especificada.
- (1 pts) El código no implementa un algoritmo de programación voraz.