2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001
Sección 3. Función para crear diccionario
Para el siguiente numeral, asuma que tiene un diccionario con los nombres de todas las especies del ártico en el siguiente formato:
dicEspecies = {codigo_especie:nombre_especie}
5. crearDiccionario(mHielo, mAnimales, dicEspecies) que recibe una matriz de hielo, una matriz de animales y el diccionario de las especies del Ártico.
La función crea un diccionario con los datos anteriore similar al mostrado:
2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001
(Editado para tarea, se manteniene el objetivo de aprendizaje) Sección 2. Descripción del Problema y funciones con matrices (pregunta 2,3,4)
Para el resto del examen considere lo siguiente:
Las matrices pueden ser divididas en cuadrantes, cuatro subregiones de igual tamaño, denominados:
Q1, Q2, Q3 y Q4
como se muestra en la gráfica:
Asuma que existen las siguientes funciones:
a. cuadrantes(matriz) que recibe una matriz y devuelve un vector con los cuadrantes de la matriz [Q1, Q2, Q3, Q4], que son a su vez matrices (arreglos).
b. poblacionEspecie(mAnimales, especie) que recibe una matriz de animales, el código de una especie y determina la cantidad total de animales de esa especie en cada uno de los cuadrantes. El resultado es un vector con el siguiente formato [pQ1, pQ2, pQ3, pQ4].
Realice las funciones:
2.densidadHielo(mHielo) que recibe una matriz de hielo y determina la densidad de hielo para cada cuadrante. El resultado es un vector con el formato [dQ1, dQ2, dQ3, dQ4].
La densidad de un cuadrante es la cantidad total de sus celdas con valor uno (1) dividido para el número total de celdas del cuadrante.
3.especieDominante(mAnimales) que recibe una matriz de animales y encuentra la especie dominante por cuadrante.
El resultado es un vector con los códigos de la especie que más se repite en cada cuadrante: [eQ1, eQ2, eQ3, eQ4]
4. migracionEspecie(mAnimales2009, mAnimales2019, especie) que recibe la matriz de animales del 2009, la matriz de animales del 2019 y el código de una especie. La función debe retornar un vector [a,b] con dos valores:
a. El primer valor corresponde al cuadrante donde hubo mayor población de animales de la especie en el 2009.
b. El segundo valor corresponde al cuadrante donde hay mayor población de animales de la especie en el 2019.
Los valores son los códigos de los cuadrantes: ‘Q1’, ‘Q2′,’Q3’, ‘Q4’
2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001
Sección 4. Programa que usa las funciones de la sección 1, 2, 3 (preguntas 6-9)
implemente un programa principal que:
6. Forme las matrices a partir del archivo ‘artico2009-2019.txt‘
7. Muestre por pantalla el código de las especies que en el 2019 son comunes (se repiten) para los cuadrantes Q1, Q2 y Q4 pero que no existan en Q3.
Los siguientes dos numerales se resuelven juntos.
8. Determine si ha habido migración de la especie con código 3. Existe migración si el cuadrante con mayor población en el 2009 y 2019 son diferentes .
9. Una posible explicación para la migración de una especie puede ser el deshielo. Entonces, si existió migración (de la especie con código 3) del cuadrante con mayor población en el 2009 (Qx) al cuadrante con mayor población en el 2019 (Qy), muestre la diferencia (positiva o negativa) de densidad de hielo del 2009 al 2019 para el cuadrante Qx.
Calcule la diferencia con la siguiente fórmula:
Diferencia = densidad_Qx_2019 - densidad_Qx_2009
Por ejemplo:
Si migracionEspecie retorna (‘Q1’, ‘Q4’), la diferencia será la densidad de hielo en el 2009 del cuadrante ‘Q1’ menos la densidad de hielo en el 2019 del mismo cuadrante ‘Q1’.
Para esto dispone de información sobre la cantidad de hielo y población de animales de diversas especies durante los años 2009 y 2019 en un archivo con el siguiente formato:
Número de filas
Número de columnas
Año,fila,columna,hielo,especie
crearMatriz(nomArchivo) que recibe el nombre del archivo con los datos de la WWF y retorna una tupla que contiene las siguientes cuatro matrices:
mhielo2009: Cantidad de hielo 2009
1
0
0
1
…
0
1
1
1
…
1
0
1
0
…
1
1
1
0
…
0
1
0
1
…
1
1
1
0
…
…
…
…
…
…
mhielo2019: Cantidad de hielo 2019
1
0
0
1
…
0
1
0
1
…
1
0
1
0
…
1
0
1
0
…
0
1
0
1
…
0
0
1
0
…
…
…
…
…
…
mAnimales2009: Especies de animales 2009
1
2
4
4
…
2
5
5
3
…
1
3
9
1
…
1
1
4
2
…
4
22
4
7
…
1
1
14
4
…
…
…
…
…
…
mAnimales2019: Especies de animales 2019
3
2
4
1
…
0
11
3
5
…
1
0
67
1
…
2
22
3
2
…
13
13
2
3
…
3
0
1
0
…
…
…
…
…
…
En las matrices de hielo cada valor uno (1) en una celda representa la presencia de hielo.
En las matrices de animales cada celda representa la presencia de un animal de una especie usando una cierta codificación, como la del ejemplo:
0: No hay animal
1: Lobo ártico
2: Oso Polar
3: Reno
4: Foca
5: ...
Rúbrica: numeral 1 (15 puntos): abrir y cerrar archivo, procesar lineas de tamaño de matriz, crear matrices, procesar líneas de datos de matriz, llenar matrices.
2da Evaluación I Término 2018-2019. 31-Agosto-2018 /CCPG001
(Editado para tarea, se mantiene el objetivo de aprendizaje)
Tema 2. (50 puntos) Una compañía, con miles de empleados y varias sucursales en el país, paga sus salarios por hora clasificadas como:
– horas regulares (HR),
– horas fuera de horario normal (HER),
– fines de semana (HFDS) y
– feriados (HF).
El registro de asistencia de los empleados contiene: dia, mes, año, cantidad de horas trabajadas, entre otros mostrados en el archivo ejemplo.
El archivo inicia con líneas del valor en dólares por hora, los factores de pago por tipo, una linea de encabezado y el detalle de las horas trabajadas por empleado. Por ejemplo:
VH,10,Valor Hora en ésta compañía
HR,1,Factor Horas Regulares
HER,1.21,Factor Horas Extras en dias Regulares (lunes-viernes)
HFDS,1.37,Factor Horas en Fin De Semana (Sabado o domingo)
HF,1.39,Factor Horas en Feriado
Fecha,dia,feriado,ID,nombre,sucursal,ciudad,horas-trabajadas
...
10-Agosto-2018,5,Si,FG848801,Fabricio Granados,River Mall,Cuenca,1
10-Agosto-2018,5,Si,GH907603,Segunda Vez Zambrano,River Mall,Cuenca,1
09-Agosto-2018,4,No,FG848801,Fabricio Granados,River Mall,Cuenca,9
...
Las horas extras en días regulares se calculan después de la 8va hora de trabajo.
Si el empleado trabajó en un dia feriado, que también es fin de semana, el factor aplicado es el más alto, es decir feriado.
Desarrolle las funciones descritas a continuación y un programa para calcular los valores a pagar para cada empleado.
a) calcularHoras(linea). Recibe una línea del archivo y determina el número de horas trabajadas para cada categoría. El resultado es una tupla con el identificador del empleado, ciudad y horas trabajadas regulares, extras, fines de semana y feriado.
>>> linea = "09-Agosto-2018,4,No,FG848801,Fabricio Granados, River Mall, Cuenca,9"
>>> calcularHoras(linea)
('FG848801','Cuenca',8,1,0,0)
b) leerData(nomA). Recibe el nombre del archivo de nómina (nomA) correspondiente a un mes de un año y retorna una tupla de tres elementos: (totales, mes, año). Totales es un diccionario con la suma en dólares de HR, HER, HFDS y HF trabajados por cada empleado con la siguiente estructura:
c) generaReporte(nomA). Recibe el nombre del archivo de nómina (nomA) correspondiente a un mes de un añoy genera un nuevo archivo reporte para cada ciudad.
Cada archivo reporte tiene como nombre «ciudadMes-Año.txt» y contiene: cabecera y la siguiente información por cada empleado:
2da Evaluación I Término 2018-2019. 31-Agosto-2018 /CCPG001
(Editado para tarea, se mantiene el objetivo de aprendizaje)
Tema 1. (40 puntos) Para analizar los niveles de seguridad en el país, se registran los incidentes por ciudad y tipo delito en un archivo.
incidentes
robo vehículo
asalto
Escandalo vía pública
…
Quito
540
4523
24
…
Guayaquil
605
6345
5
…
Cuenca
123
676
133
…
Machala
67
1234
412
…
…
…
….
….
…
Dispone de un modulo «ecu911» con la función cargarDatos(nombrearchivo) que lee el archivo y entrega un diccionariocon la las veces que se ha reportado cada tipo de delito para cada ciudad del país en el siguiente formato:
Para crear el diccionario debe importar el módulo.
Se requiere implementar lo siguiente:
a. Una función tablatitulos(diccionario) que recibe el diccionario descrito y retorna una coleccion:
titulos = (ciudad, tipodelito)
ciudad contiene las ciudades del archivo, y tipodelito contiene los tipos considerados en el diccionario, ambos sin duplicados.
b. La función crearMatriz(diccionario) que usando la información del diccionario crea una matriz con el número de incidentes por ciudad y tipo de delito. La matriz es un arreglo de numpy, semejante al ejemplo:
c. Una función ciudadesMenosSeguras(matriz, titulos, untipo, poblacion) que retorna los nombres de las tres ciudades que tienen el mayor indice per capita de para untipode delito.
\text{indice per capita} = \frac{\text{numero de incidentes reportados}}{\text{poblacion de la ciudad}}
La función recibe la matriz , titulos de los literales anteriores, un tipo de delito y la población de cada ciudad del país en un vector, arreglo Numpy.
Rúbrica: literal a (10 puntos), literal b (20 puntos), literal c (10 puntos).
2da Evaluación II Término 2017-2018. Febrero 14, 2018 /CCPG001
(Editado para tarea, se mantiene el objetivo de aprendizaje)
Tema 1. (35 puntos) Para un servicios de citas «san valentín» , se pretende presentar parejas para el día del «amor y la amistad». Los datos de las personas se almacenan en una estructura de datos tipo diccionario: dicPersonas.
Para conocer la compatibilidad entre dos personas, se utilizan sus características y el índice de Tanimoto que es un valor entre [0, 1] determinado como:
El emparejamiento resulta verdadero cuando: el valor del índice de Tanimoto es superior o igual al nivel de aceptación y la pareja no han tenido citas previas (sin importar su tipo: exitosa o fallida).
a) Realice una función hayEmparejamiento(codigoP1, codigoP2, dicpersonas, aceptacion) para encontrar los valores del índice de Tanimoto y emparejamiento.
La función recibe el código de dos personas, el diccionario de personas (dicpersonas) y el nivel de aceptación mínimo [0,1] para entregar los resultados en una tupla.
b) Desarrolle la función imprimirResultados(codigoPersona, dicPersonas, aceptacionMinimo, aceptacionMaximo) que genera un un archivocodigoPersona.txt, con el reporte de compatibilidad de la codigoPersona con las de género opuesto en el diccionario.
Cada línea del archivo tiene el formato siguiente:
Donde textoCompatibilidad es ‘aceptar‘ si el índice de Tanimoto está entre los niveles de aceptación mínimo y máximo, sino tiene la palabra ‘rechazar‘.
c) Elabore la función compatibles(codigoPersona, dicPersonas, aceptacion) que a partir de un codigoPersona y considerando el nivel de aceptación, genera un reporte de emparejamiento en la forma del diccionario «respuesta» .
El diccionario «respuesta» contiene el nombre, caraterísticas, índice de Tanamoto y cantidad de citasfallidas.
El parámetro de aceptación tiene valor por defecto de 0.43,