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']
>>>