Categoría: Evaluaciones

Ejercicios de examen

  • 2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar

    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:

    Cuadrantes de la matriz

    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'

    Rúbrica: numeral 2 (10 puntos), numeral 3 (20 puntos), numeral 4 (15 puntos),

  • 2Eva_IIT2018_T5 Prueba de escritorio, arreglos

    2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

    Sección 5. BONO (+10 PUNTOS)
    ¿Qué resultado muestra el siguiente código? Justifique su respuesta

    import numpy as np
    
    M = np.ones((20,17), int)
    M1 = M[5:14,7:15]
    M2 = M[1:9,8:]
    
    f,c = M2.shape
    if M1.size == f*c:
        M[5:14,7:15] = 0
    else:
        M[1:9,8:] = -1
    
    print(M.sum())
    
  • 2Eva_IIT2018_T4 Hielo y especies en Ártico-programa

    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’.

    Rúbrica: numeral 6 (1 punto), numeral 7 (9 puntos), numeral 8 (1 punto),numeral 9 (9 puntos)

  • 2Eva_IIT2018_T1 Hielo y especies en Ártico-Archivo

    2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

    (Editado para tarea, se manteniene el objetivo de aprendizaje)
    Sección 1
    . (pregunta 1) Descripción del Problema y lectura de datos desde archivo

    La World Wide Fund for Nature (WWF) se encuentra realizando el #TenYearChallenge del Ártico. http://diarioecologia.com/el-deshielo-del-artico-aumenta-la-mortalidad-del-oso-polar/

    Referencia: https://www.worldwildlife.org/stories/imperiled-polar-bears-face-new-threat-in-alaska-s-arctic-national-wildlife-refuge

    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

    Ejemplo: 'artico2009-2019.txt'

    22
    14
    Año,fila,columna,hielo(0/1),especie
    ...
    2009,14,8,1,9
    ...
    2019,5,7,0,3

    Implemente las siguientes funciones:

    1. 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.

  • 1Eva_IIT2018_T3 Compras 'Black Friday'

    1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001

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

    Tema 3. (50 puntos) El Black Friday inaugura la temporada de compras navideñas con significativas rebajas en muchas tiendas minoristas y grandes almacenes. https://www.profesionalreview.com/2018/09/24/tiendas-donde-comprar-black-friday/

    Sucede después de la celebración de Acción de Gracias en Estados Unidos.

    Suponga que posee los datos de los productos de una tienda en los siguientes arreglos:

    C: códigos de todos los productos (cadenas de caracteres)
    P: precios en dólares para cada uno de los productos (valores con decimales).
    D: descuentos asociados a cada producto (enteros entre 0 y 100)
    S: nombre de la sección donde se encuentra cada producto (cadenas de caracteres)

    Se requiere implementar las siguientes funciones:

    1.  calcularPrecio(codigo,C,P,D) que recibe un código y los arreglos C,P,D y retorna el precio final del producto, aplicando el descuento correspondiente.
      Para calcular el precio final, aplique las siguiente fórmula:
      precio_final = precio - precio*\frac{descuento}{100}
    2. calcularTotal(compras,C,P,D) que recibe una lista de compras con los códigos de los productos, los arreglos C,P,D y aplicando todos los descuentos calcula el valor total a pagar, .
    3. hallarSecciones(compras,C,S) que recibe una lista de compras con los códigos de los productos, los arreglos C y S y determina las secciones que deberán visitar durante las compras. La lista de visitas no tiene elementos repetidos.
    4. descuentosPorSección (D,S) que recibe los arrelgos D y S y retorna una tabla con el nombre de cada sección y la cantidad de productos que tienen más del 50% de descuento.

    Realice un programa que inicialmente muestre una tabla con las secciones y cantidad de productos con más del 50% de descuento. Luego para las compras, permita ingresar los códigos de los productos, procese y muestre el valor total a pagar y las secciones que necesita visitar. El usuario terminará de ingresar las compras escribiendo 'fin'.

    Ejemplos de arreglos:

    C = ['CTR-2424', 'SKU-5675', 'PSS-4542']
    P = [ 56.65, 32.00, 22.22]
    D = [0, 50, 10]
    S = ['Ropa Niños', 'Juguetes', 'Hombre']
    

    Rúbrica: numeral 1 (5 puntos), numeral 2 y 3 (10 puntos c/u), numeral 4 (15 puntos). programa (10 puntos)


    Referencias:

  • 1Eva_IIT2018_T2 Juego conocimiento (Ahorcado)

    1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001

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

    Tema 2. (30 puntos) Para un juego llamado "conocimiento", dispone de una lista que contiene un número determinado de 'palabras'.

    El juego tiene las siguientes reglas:

    1. Al inicio, se selecciona aleatoriamente una palabra secreta de la lista de palabras.

    2. Como una pista, aleatoriamente se escoge una letra de la palabra secreta, que sea consonante y se la muestra entre los espacios por adivinar de secreta.

    Por ejemplo, si  la palabra secreta es 'ESPOL' y la letra pista sorteada es 'S', se mostrará:

    '-S---'

    3. Se pide al jugador ingresar una letra, indiferente si es mayúscula o minúscula.

    Si la letra  e encuentra en secreta se muestra la letra adivinada en la posición que corresponde.

    Letra: L
    '-S--L'

    4. El máximo de intentos para el jugador es el doble de letras de la palabra secreta.

    5. Al final muestre si el usuario ganó o perdió y la cantidad de intentos usados,

    Escriba un programa en Python para implementar el juego.


    Sugerencia: Realice una función cambialetra(secreta,letra,estado) para revisar si letra se encuentra en secreta y cambiar el estado del juego.

    Ejemplo: 
    secreta = 'ESPOL'
    letra = 'S'
    estado = '-----'
    cambialetra(secreta, letra, estado)
    >>> '-S---'

    Sugerencia: Realice una función escondeletras(secreta) que cambia las letras de la palabra secreta por un símbolo predeterminado:

    escondeletras(secreta)
    >>> '-S---'

    Referencia: 2Eva_IT2005_T3 Adivina palabra (ahorcado)

     

  • 1Eva_IIT2018_T1 Prueba de escritorio, listas

    1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001

    Tema 1. (20 puntos)

    a. (10 puntos) ¿Qué imprime el siguiente código? Justifique su respuesta

    lista = [89, 45, 23, 17, 55, 95, 13, 41, 28, 11]
    
    lista.sort()
    promedio = sum(lista)//len(lista)
    
    print(promedio)
    
    menores = []
    i = 0
    while lista[i] < promedio:
        menores.append(lista[i])
        i += 1
    
    print(menores)
    

    b. (10 puntos) ¿Qué imprime el siguiente código? Justifique su respuesta

    pal = 'Se van en sus naves'
    
    b     = pal[::-1].replace(' ', '').lower()
    pal_b = pal.lower().replace(' ', '')
    
    if pal_b == b:
        print('Es palíndromo')
    else:
        print('No es palíndromo')
    

    Nota: Asuma que este tema NO tiemen errores de compilación. Si usted cree que hay algún error de compilación, consúltelo inmediatamente con su profesor

  • 3Eva_IT2018_T2 Producción minera del país

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

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

    Tema 2. (50 puntos) En el último discurso presidencial, se mencionaron algunos datos sobre las ganancias de algunos minerales del país que llamaron la atención de los ciudadanos.

    http://www.pichinchauniversal.com.ec/sector-minero-sera-un-gran-aportador-economico/
    http://www.pichinchauniversal.com.ec/sector-minero-sera-un-gran-aportador-economico/

    Suponga que tiene todo el texto del discurso con el formato en minúsculas,  las palabras separadas por un espacio, sin signos de puntuacion ni otros símbolos. Los minerales están identificados por el prefijo "mral_" seguido del nombre del mineral. Por ejemplo: 'mral_oro', 'mral_plata', 'mral_cobalto'

    discurso = '... y el dia de ayer descubrimos en la mina mirador que la cantidad de mral_oro ...'

    a) Implemente la función extraerMinerales(discurso) que al recibir el texto del discurso encuentra los nombres de todos los minerales mencionados. El resultado es una lista con los nombres de los minerales que empiezan con mayúscula y no se repiten en la lista.

    Por otro lado, suponque que dispone de las tablas de producción para cada mineral de las canteras del país, costos totales de extracción, costos totales de transporte, los nombres de los minerales y minas asociados a las filas y columnas de las tablas, y los precios cada mineral, semejantes a los mostrados al final del ejercicio.
    Con ésta información implemente las siguiente funciones:

    b) La función calcularGanancias(P,C,T,precios)  que calcula las ganancias o pérdidas de cada mineral por mina. La función recibe la lista de precios de venta de los minerales las tres matrices: producción (P) , costos totales de extracción (C) y costos totales de transporte (T).

    Adicionamente, considere las siguientes fórmulas:

    ganancia = ventas - costos
    ventas = producción*precio
    costos = costos de transporte + costo de extracción

    c) La función gananciaTotal(M, Minerales) determina las ganancias totales de cada mineral de mayor a menor, junto a los correspondientes nombres de mineral.

    La función recibe la matriz del literal anterior y la lista de las etiquetas de los minerales (fila de la matriz).
    El resultado es una tupla de dos elementos ordenados por ganancia:
    - el vector de Numpy de las ganancias totales por mineral
    - una lista con los nombres de los minerales.

    d) La función top8(discurso, ganatotal) presenta los nombres de los ocho (8) minerales que generaron más ganancias totales  y que fueron mencionados en el discurso. La variable ganatotal corresponde al resultado de la función del literal anterior.

    Rúbrica: literal a (1o puntos), literal b (15 puntos), literal c (15 puntos), literal d (10 puntos)

    Datos de prueba:
    
    minerales = ['Oro', 'Plata', 'Cobre']
    precios   = [38.48,    3.43,    0.01]
    
    minas = ['MIRADOR', 'FRUTA_DEL_NORTE', 'LOMA_LARGA', 'otra']
    
    # produccion
    P = np.array([[ 13524000, 121072000,  1204000,  9632000],
                  [ 28000000,    952000,  9632000, 96404000],
                  [126980000,    896000, 92988000,  9604000]])
    
    # costos totales de extracción
    C = np.array([[12.32, 10.23, 23.23, 19.23],
                  [ 3.13,  1.78,  2.45,  1,69],
                  [ 8.32,  5.25,  6.32,  6.89]])
    
    # costos totales de transporte
    T = np.array([[ 43736616, 341786256,  5442080,  28241024],
                  [ 76244000,   1827840, 13966400, 435746080],
                  [156439360,   1121792,300723192,  10785292]])
    

    Referencia: Archivo original 3raEvaI_Term2018.pdf

  • 3Eva_IT2018_T3 Prueba de escritorio, listas, conjuntos

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

    Tema 3. (10 puntos) Indique la salida por pantalla del siguiente código. Justifique su respuesta.

    lista1 = ["A", "e", "a", "b", "a", "D"]
    lista2 = ["E", "b", "a", "m", "d"]
    
    lista3 = []
    
    for elemento in lista1:
        if elemento not in lista2:
            lista3.append(elemento)
    
    print(set(lista2).difference(lista3))
    
    print(set(lista3).union(lista1))
    
    print(set(lista2).symmetric_difference(lista1))
    

    Referencia: Archivo original 3raEvaI_Term2018.pdf

  • 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