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