3Eva_IT2018_T1 Choferes y Rutas Trailers

3ra Evaluación I Término 2018-2019. 14-Septiembre-2018 /CCPG001

(Editado para tarea, se mantiene el objetivo de aprendizaje)

Tema 1 (40 puntos). En una empresa de transporte de carga (trailers) se registran para cada fecha, el código de  los choferes que manejaron en una ruta.

https://patiodeautos.com/revista/generales/trailer-electrico-tesla
https://patiodeautos.com/revista/generales/trailer-electrico-tesla

El registro genera un archivo «rutasManejadas2018.txt» en el formato mostrado:

id_ruta, id_chofer, fecha
Guayaquil-Cuenca,SMS,17-05-2018
Guayaquil-Cuenca,AGB,18-05-2018
Guayaquil-Cuenca,SMZ,17-05-2018
Guayaquil-Daule,EVN,17-05-2018
Guayaquil-Daule,AAQ,18-05-2018

Por lo rutinario del trabajo, se ha recomendado que los choferes no repitan una ruta para los últimos n días a partir de una fecha. Para seguir la recomendación se requiere implementar:

a) La función cargarDatos(narchivo) que recibe un archivo de registro y retorna una tupla con:
– un conjunto con los choferes que trabajaron en las fechas  del archivo (id_chofer)
– los datos del archivo en un diccionario con la estructura mostrada.

{'17-05-2018': {'Guayaquil-Cuenca': ['SMS', 'SMZ', ...],
                'Guayaquil-Daule': ['EVN', ...]},
 '18-05-2018': {'Guayaquil-Cuenca': ['AGB', ...],
                'Guayaquil-Daule': ['AAQ', ...]}}

b) La función encontrarChoferes(datos, loschoferes, unafecha, unaruta, n),  que para seguir la recomendación, encuentra aquellos choferes que no manejaron en una ruta, durante los n dias anteriores a una fecha.

c) La función grabarArchivo(datos, loschoferes, unafecha, unaruta, n) que crea un archivo con el resultado de la función anterior con el formato mostrado. El nombre del archico generado se conforma como: «unaruta_unafecha.txt»

Nombre de archivo: Guayaquil-Cuenca_19-05-2018_2.txt

Para la ruta Guayaquil-Cuenca los choferes disponibles para la fecha 19-05-2018 que no hayan manejado 2 dias anteriores son: 
EVN
AAQ

d) Genere todos los archivos para todas las rutas disponibles.

NOTA: Para administrar las fechas, usted ya dispone de una función calcularFecha(unafecha,n) que recibe una fecha y los n días anteriores y determina la fecha pasada. El formato de fecha se maneja en el mismo formato de fecha que el archivo.

>>> calcularFecha('19-05-2018',2)
'17-05-2018'

Rúbrica: Literal a (12 puntos), Literal b(16 puntos), Literal c y d (12 puntos)

Referencia: Archivo original 3raEvaI_Term2018.pdf