s2Eva_IIT2016_T1 Multas de Transito por sector

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