Ejercicio: 2Eva_IIT2016_T1 Multas de Transito por sector
Propuesta de solución en Python:
# CCPG1001-Fundamentos de programación # 2Eva_IIT2016_T1 Multas de Transito por sector import numpy as np def generaMatriz(listamultas,sectores): n = len(sectores) unafila = sectores[0] m = len(unafila) matriz = np.zeros(shape=(n,m),dtype=float) k = len(listamultas) i = 0 while not(i>=k): f = listamultas[i][0] c = listamultas[i][1] valor = listamultas[i][2] matriz[f,c] = matriz[f,c] + valor i = i+1 return(matriz) def sectorTop(matriz): # TAREA: Realizar para este y oeste tamano = np.shape(matriz) n = tamano[0] m = tamano[1] norte = matriz[0,:] sur = matriz[n-1,:] centro = matriz[1:3,2] rnorte = np.sum(norte) rsur = np.sum(sur) rcentro = np.sum(centro) suma = [rnorte,rsur,rcentro] referencia = ['norte','sur','centro'] cual = np.argmax(suma) nombre = referencia[cual] valor = suma[cual] respuesta = [nombre,valor] return(respuesta) # PROGRAMA # INGRESO sectores = [ ['Norte','Norte','Norte','Norte','Norte'], ['Oeste','Oeste','Centro','Este','Este'], ['Oeste','Oeste','Centro','Este','Este'], ['Oeste','Oeste','Centro','Este','Este'], ['Sur','Sur','Sur','Sur','Sur']] listamultas = [(0, 0, 120), (1, 2, 330), (3, 4, 123), (4, 2, 62), (0, 0, 50), (4, 4, 89), (0, 3, 25), (2, 0, 43), (3, 2, 21), (0, 0, 120)] # PROCEDIMIENTO recaudar = generaMatriz(listamultas,sectores) # SALIDA print(sectores) print(listamultas) print('Hay que recaudar:') print(recaudar)
Resultado del algoritmo
[['Norte', 'Norte', 'Norte', 'Norte', 'Norte'], ['Oeste', 'Oeste', 'Centro', 'Este', 'Este'], ['Oeste', 'Oeste', 'Centro', 'Este', 'Este'], ['Oeste', 'Oeste', 'Centro', 'Este', 'Este'], ['Sur', 'Sur', 'Sur', 'Sur', 'Sur']] [(0, 0, 120), (1, 2, 330), (3, 4, 123), (4, 2, 62), (0, 0, 50), (4, 4, 89), (0, 3, 25), (2, 0, 43), (3, 2, 21), (0, 0, 120)] Hay que recaudar: [[290. 0. 0. 25. 0.] [ 0. 0. 330. 0. 0.] [ 43. 0. 0. 0. 0.] [ 0. 0. 21. 0. 123.] [ 0. 0. 62. 0. 89.]] >>>