Ejercicio: 3Eva_IT2018_T2 Producción minera del país
Solución propuesta en Python, el primer bloque corresponde solo a las funciones requeridas en el examen. El segundo bloque corresponde a un programa de prueba.
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL # 3Eva_IT2018_T2 Producción minera del país import numpy as np # Literal a def extraerMinerales(discurso): palabras = discurso.split(' ') cuales = [] for unapalabra in palabras: # Tarea: verificar únicos if 'mral_' in unapalabra: mencionados = unapalabra[5:] mencionados = mencionados.title() cuales.append(mencionados) return(cuales) # literal b def calcularGanancias(P,C,T,precios): produccion = np.array(P) costosExtraccion = np.array(C, dtype=float) costosTransporte = np.array(T) # precio en forma de columna precios = np.transpose([precios]) ventas = produccion*precios costo = costosTransporte + costosExtraccion ganancia = ventas - costo return(ganancia) # literal c def gananciaTotal(ganancia, minerales): ganametal = np.sum(ganancia,axis =1) ascendente = np.argsort(ganametal) descendente = np.argsort(-ganametal) totalmetal = ganametal[descendente] # convierte arreglo para ascendente minerales = np.array(minerales) cualmetal = minerales[descendente] ganatotal = (totalmetal,list(cualmetal)) return(ganatotal) # literal d def top8(discurso,reporte): mencionados = extraerMinerales(discurso) totalmetal = reporte[0] cualmetal = reporte[1] interseccion = [] m = len(cualmetal) for i in range(0,m,1): if (cualmetal[i] in mencionados): interseccion.append(cualmetal[i]) mejoresmencionados = interseccion[:8] return (mejoresmencionados)
Programa de Prueba
Observación: las matrices C y T no tienen el mismo orden de magnitud a pesar de ser costos totales. Podría ser que el costo de extracción C sea por gramos, sin embargo las matrices se usan tal como fueron presentadas en el examen
# CCPG1001-Fundamentos de Programación - FIEC-ESPOL # PROGRAMA DE PRUEBA ----- discurso = 'y el dia de ayer descubrimos en la mina mirador que la cantidad de mral_oro' minerales = ['Oro', 'Plata', 'Cobre'] precios = [38.48, 3.43, 0.01] minas = ['MIRADOR', 'FRUTA_DEL_NORTE', 'LOMA_LARGA', 'otra'] P = [[ 13524000, 121072000, 1204000, 9632000], [ 28000000, 952000, 9632000, 96404000], [126980000, 896000, 92988000, 9604000]] C = [[ 12.32, 10.23, 23.23, 19.23], [ 3.13, 1.78, 2.45, 1.69], [ 8.32, 5.25, 6.32, 6.89]] T = [[ 43736616, 341786256, 5442080, 28241024], [ 76244000, 1827840, 13966400, 435746080], [156439360, 1121792,300723192, 10785292]] # PROCEDIMIENTO mencionados = extraerMinerales(discurso) ganancias = calcularGanancias(P,C,T,precios) ganatotal = gananciaTotal(ganancias, minerales) totalmetal = ganatotal[0] cualmetal = ganatotal[1] mejoresmencionados = top8(discurso,ganatotal) # SALIDA print('a) los minerales mencionados son: ') print(mencionados) print('b) las ganancias totales son:') print(ganancias) print('c) ganancias totales por metal') print(totalmetal) print(cualmetal) print('d) los 8 mejores mencionados: ') print(mejoresmencionados)
los resultados en pantalla son :
a) los minerales mencionados son: ['Oro'] b) las ganancias totales son: [[ 4.76666892e+08 4.31706429e+09 4.08878168e+07 3.42398317e+08] [ 1.97959969e+07 1.43751822e+06 1.90713576e+07 -1.05080362e+08] [ -1.55169568e+08 -1.11283725e+06 -2.99793318e+08 -1.06892589e+07]] c) ganancias totales por metal [ 5.17701732e+09 -6.47754890e+07 -4.66764983e+08] ['Oro', 'Plata', 'Cobre'] d) los 8 mejores mencionados: ['Oro'] >>>