1Eva_IT2016_T3 Tiempos de navegación internet

1ra Evaluación I Término 2016-2017. Junio 28, 2016 /CCPG001 – FIEC

TEMA 3 . (40  puntos) Se dispone de un arreglo de NumPy que representa el tiempo[empleado, sitio] de navegación en Internet de una empresa expresada en un arreglo de nxm. El arreglo es similar al resultado del tema anterior, además también se dispone de las listas de los empleados y sitios de trabajo.

La empresa requiere elaborar un reporte de las visitas a internet que incluya los siguientes datos:

a. Tiempo total de uso de Internet.
b. Tiempo total de uso de Internet  por empleado
c. Tiempo total de visita  por sitio
d. Tiempo total de visita  por sitio de trabajo
e. Tiempo total de visita  por sitios que no son de trabajo
f. El nombre del empleado que más tiempo ha pasado en sitios que no son de trabajo
g. El sitio de trabajo que más tiempo ha sido usado
h. Si el proveedor de Internet cobra un valor de 5 centavos por minuto de visita alos sitios de trabajo y el doble para los otros sitios. Calcule el total a  pagar en dólares.
i. ¿Cuántos empleados han visitado cada sitio ?

Desarrolle un programa en Python que calcule los resultados a las preguntas anteriores y muestre por pantalla las respuestas.

Referencia: Archivo original 1raEvaIT2016.pdf

1Eva_IT2016_T2 historial de visitas web

1ra Evaluación I Término 2016-2017. Junio 28, 2016 /CCPG001 – FIEC

TEMA 2. (30 PUNTOS) teletrabajo imagen

Una empresa registra los sitios de internet visitados por sus empleados y los minutos de navegación en una lista de tamaño t semejante a la mostrada.

Cada registro se almacena usando una cadena con el formato:

visitados = [ 'maria2|www.facebook.com|160',
  'xavi7|www.eluniverso.com|50',
  'jose15|www.sri.gob.ec|30',
  'maria2|www.twitter.com|30',
  'xavi7|www.inec.gob.ec|10',
  'maria2|www.espol.edu.ec|50',
  'jose15|www.sri.gob.ec|120',
  'xavi7|www.sri.gob.ec|20', 
  'maria2|www.twitter.com|20',
  '...' ]

Para analizar los datos, la empresa dispone de las listas para n empleados p sitios de trabajo:

empleados = ['maria2', 'jose15', 'xavi7', '...']
trabajo   = [ 'www.espol.edu.ec',
              'www.inec.gob.ec', 
              'www.sri.gob.ec', 
              '...']

Con las listas visitados, empleados y trabajo descritas, elabore un programa en Python para obtener los siguientes reportes:

a. Genere una lista con los sitios que no son de trabajo que han sido visitados por los empleados. La lista obtenida debe contener los q elementos sin repetir.

b. Tabule el tiempo total de visita para cada empleado (n) y cada sitio visitado (m=p+q) en un arreglo de NumPy de dos dimensiones que represente lo mostrado en el ejemplo:

tabla sitios web de trabajo y ocio

Referencia: Archivo original 1raEvaIT2016.pdf


Nómadas digitales

2Eva_IIT2016_T1 Multas de Transito por sector

2da Evaluación II Término 2016-2017. Febrero 14, 2016 /CCPG001

(Editado para tarea, se manteniene el objetivo de aprendizaje)

Tema 1. (30 puntos) Para registrar las multas de tránsito, la ciudad será representada por una matriz de 5×5 dividida en cuadrantes y sectores. multastransito01

Cada celda corresponde a un cuadrante y registra los valores acumulados de las multas reportadas por los agentes de tránsito. Existen cinco “sectores” (Norte Sur, Centro, Este y Oeste) que agrupan a varios cuadrantes mostrados en la tabla “sectores”.

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

La tabla sectores muestra únicamente la distribución de sectores. No debe crear esta matriz “sectores”.

Para cumplir con la tarea, deberá implementar lo siguiente:

a. Una función generaMatriz(listamultas) que recibe una lista de tuplas  con las coordenadas del cuadrante y el valor de la multa (fila, columna, valor). La función deberá retornar una matriz (arreglo Numpy) con el valor agregado de las multas generadas para cada cuadrante.

Por ejemplo, para:
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)]

la función retorna:
totalmultas
 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

Nota: las coordenadas de la totalmultas empiezan en 0,0. En listamultas, las coordenadas pueden repetirse al haber varias multas en un mismo cuadrante.

b. Una función sectorTop(matriz) que reciba la matriz generada en el tema anterior, calcule el sector con el vator total de multas más alto y retorne una tupla con el nombre del sector (Norte, Sur, Centro, Este, Oeste) y dicho valor.

Para el ejemplo anterior, la función retornará: 
('Centro',351)

Referencia: “Doble columna y uso de zonas prohibidas, problemas por resolver en Guayaquil“, 27 de Agosto, 2015, www.eluniverso.com

Archivo original 2Eva_IIT2016.pdf

3Eva_IT2016_T2 sensar cultivos con dron

3ra Evaluación I Término 2016-2017, Septiembre 13, 2016 /CCPG001

Tema 2. (50 puntos) Una empresa agrícola ha decidido integrar un dron (avión no tripulado) para monitorear el crecimiento de los cultivos en una de sus plantaciones con dimensión rectangular de MxN .

drone agricola

Referencia: “Drones vuelan para ver el estado de los cultivos”. eluniverso.com. 7 de febrero, 2015.

El dron usado puede de sensar el número de cultivos en una posicion=[i,j] usando una funcion sensarCultivos(posicion) que mueve el dron a la posición dada por una tupla y retorna un valor entero correspondiente al número de cultivos sensados.

Suponga que ésta función ya existe, por lo tanto no necesita ser implementada en el examen.

A partir de la información anterior, implemente las siguientes funciones:

a) generarplantacion(dimension) que recibe una tupla dimension=[M,N] de la plantación y procede a sensar los cultivos utilizando la funcion sensarcultivos(posicion) para cada una de las posiciones. Se obtiene una matriz plantacion con los valores del número de cultivos en cada posicion=[fila,columna].

b) analizarDensidad(plantacion, limite) que calcula una matriz con los grados de crecimiento de la plantación. La función recibe la matriz plantación del literal a y un límite que representa un parametro para determinar la densidad en una posicion. Una posición es considerada con crecimiento ‘BAJO‘ si tiene menos que el límite de cultivos, caso contrario se considera de crecimiento ‘ALTO‘. Al definir la función considere que el valor predeterminado del límite es 4. Ejemplo:

plantacion=[[5,3,2],
            [1,4,8],
            [2,3,1]]

>>analizaDensidad(plantacion)
retorna:
[['ALTO','BAJO','BAJO'],
 ['BAJO','ALTO','ALTO'],
 ['BAJO','BAJO','BAJO']]

c) reporteCrecimento(plantacion,densidad) recibe las matrices de los literales a y b. Suponga que “surco” es equivalente a una fila de la matriz, y “parcela” es equivalente a una columna del surco. La función debe retornar una tupla de tres elementos con la siguiente información:

  • los promedios de los cultivos por surcos
  • las posiciones, relativas a cada surco, de las parcelas que tienen mayor número de cultivos en dicho surco.
  • los promedios de cultivos de las parcelas para los grados de crecimiento ‘ALTO’ Y ‘BAJO’.

Por ejemplo, usando las matrices anteriores:

>>> reporteCrecimiento(plantacion,densidad)
retorna:
([3.33333333, 4.33333333, 2.0], [0, 2, 1], [5.66667, 2.0]

Como referencia un ejemplo de un surco:

surco[0] = [parcela0, parcela1, parcela2]

Referencia: Archivo original 3Eva_IT2016.pdf

3Eva_IIT2016_T2 Juntas receptoras de voto

3ra Evaluación II Término 2016-2017, Marzo 7, 2017 /CCPG001

(Editado para tarea, se mantiene el objetivo de aprendizaje)

TEMA 2. (45 Puntos) Para el control de las elecciones presidenciales de un país, Ud. tiene dos matrices con los votos de hombres y mujeres para cada uno de los candidatos:

JRV_H (juntas receptoras del voto, hombres)
JRV_M (juntas receptoras del voto, mujeres)

Las filas representan las juntas receptoras del voto y las columnas representan los candidatos. El número en la celda representa el número de votos para un candidato en una JRV:

También tiene una tupla con los nombres de los candidatos:

candidatos = (‘candidato1’, ‘candidato2’, … ‘candidatoN’)

Suponga que estas matrices son creadas por una función ya existente y retornadas al inicio de su programa principal. Por ejemplo:

JRV_H = creaMatrizHombres()
JRV_M = creaMatrizMujeres()

Nota: NO necesita implementar estas funciones o crear las matrices; esto ya ha sido hecho por usted.

Se le pide lo siguiente:

  1. Crear una función contarVotos(JRV_H, JRV_M) que recibe ambas matrices y devuelve una tupla con los votos totales para cada candidato.
  2. Crear la función segundaVuelta(JRV_H, JRV_M) que recibe ambas matrices y devuelve el valor booleano 'True' si hay segunda vuelta, 'False' si no.
    No hay segunda vuelta si el primer candidato tiene al menos el 40% de los votos registrados en las matrices, y al menos 10 puntos porcentuales de diferencia con el segundo.
  3. Crear la función estadística(JRV_H, JRV_M, candidatos, nombre) que recibe ambas matrices, la tupla con los nombres de los candidatos, el nombre de un candidato y devuelve para ese candidato:
    – una tupla con el porcentaje de votos del total global de votos,
    – porcentaje de votos de hombres del total de votos para ese candidato y
    – porcentaje de votos de mujeres del total de votos para ese candidato.
  4. Crear un programa principal que utilizando las matrices JRV_H, JRV_M y las tres funciones anteriores muestre lo siguiente:
Elecciones Presidenciales
Candidato: Perico De Los Palotes
% votos totales: 41%
% votos hombres: 55%
% votos mujeres: 45%
Candidato: Juan Pueblo
% votos totales: 30%
% votos hombres: 48%
% votos mujeres: 52%
Candidato: Juanita Pueblo
% votos totales: 15%
% votos hombres: 30%
% votos mujeres: 70%
…
SI/NO hay segunda vuelta (dependiendo de si hay o no segunda vuelta)

Ejemplo de matriz para pruebas

# Ingreso
JRV_H = np.array([
    [15,145,230,45],
    [18,187,89,67],
    [109,12,28,18],
    [231,76,67,137],
    ])

JRV_M = np.array([
    [100,240,19,45],
    [50,38,242,67],
    [178,12,164,5],
    [123,23,38,333]
    ])
candidatos = ['Perico','Juan','Juanita','Ana']

Referencia: Archivo original 3raEvaIIT2016.pdf

2Eva_IIT2015~T3 matriz de campos petroleros

2da Evaluación II Término 2015-2016, Febrero 2016 /FIEC

Tema 3. (50 puntos) Se le ha pedido ayuda con el desarrollo de un sistema para el control de campos petroleros.

Se le ha indicado que la información de los campos petroleros se encuentra en un archivo estructurado con los siguientes atributos: código, nombre, ubicación (fila,columna), y número de barriles producidos. A continuación se muestra un ejemplo:

1|Campo Bolívar|0,2|97
2|Campo Zamora|3,0|86
3|Campo Tungurahua|4,3|101
4|Campo Pastaza|2,1|78

El atributo de ubicación sirve para realizar una representación de los campos en una matriz de n xm como si fuera el mapa de algún sitio. Por ejemplo:

0 1 2 3 4
0 1
1
2 4
3 2
4 3
5

Esta representación permitirá la generación de reportes acerca de los campos petroleros. Un reporte necesario es uno que permita saber cuantos campos petroleros hay en un área buscada y cuantos barriles en total se producen en esa área. Por ejemplo:

Área del punto (0,1) al (4,3) ‐> hay 3 campos petroleros 
                                 y se producen 276 barriles

Se le pide:

1. Implementar una función cargarInformacion(nombreArchivo) que retorna un diccionario con la información de los campos petroleros.

2. Implementar la función u bicarCamposPetroleros(diccionario, n, m) que recibe un diccionario y retorna una matriz de nxm de numpy con la ubicación de los campos petroleros. Asuma que n y m son dimensiones válidas para que la matriz contenga los campos petroleros descritos en el archivo.

3. Implementar la función r eporteArea(matriz, diccionario, puntoInicio, puntoFin) que recibe una matriz de numpy, un diccionario, y dos tuplas (puntoInicio y puntoFin) que está compuesta por dos coordenadas de fila y columna; y retorna unatupla con el número de campos petroleros y números de barriles producidos en esa área.

Ejemplo:

reporteArea(matriz, diccionario, (0,1), (4,3)) 
        retorna 3, 276
0 1 2 3 4
0 1
1
2 4
3 2
4 3
5

3Eva_IIT2011~T2 Función para problema de las 8 torres

3ra Evaluación II Término 2011-2012, Febrero 2012 /FIEC

Tema 2. (20 puntos) El Problema de Torres es un pasatiempo en el que se colocan ocho torres en un tablero de ajedrez sin que estas se amenacen.

La torre amenaza a aquellas piezas que se encuentren en su misma fila o columna.

En la matriz las torres están representadas por el 1 y los espacios vacios por el 0.

1
1
1
1
1
1
1
1

A Ud. Se le ha solicitado implementar:

La función int tableroValido(int Tablero[8][8]) la cual indica si el tablero es válido o no verificando que no existe ninguna torre que este amenazando a otra. Para el caso de ser válido retorna 1 sino 0.

3Eva_IIT2015~T3 Juego planta bombas

3ra Evaluación II Término 2015-2016, Febrero 2016 /FIEC

Tema 3. (40 puntos) Implemente las siguientes funciones:

a. colocarMinas(campo, cantidad, orientacion) que recibe un arreglo tipo matriz llamado campo , cantidad y orientación.  Luego, genere cantidad de minas de longitud 3 con orientación horizontal o vertical (dada por el parámetro correspondiente) y las coloque en posiciones aleatorias en el campo. Las minas se representan con números consecutivos entre 1 y cantidad. Las minas no pueden salirse del tablero ni intersectarse con otras minas.

El siguiente ejemplo representa un campo de 10×10, con 5 minas en orientación horizontal.

campo
4 4 4
1 1 1
.
.
.
3 3 3
.
.
5 5 5
2 2 2

b. avance(campo, puntoInicio, puntoFin) que recibe dos tuplas con coordenadas y retorna los puntos ganados (valor positivo) o perdidos (valor negativo) de acuerdo a las siguientes reglas:

  • Si el puntoFin en campo NO contiene una mina: todas las minas adyacentes a puntoInicio se destruyen y gana un punto por cada mina destruida.
  • Si el puntoFin en campo contiene una mina: la mina del puntoFin (solo esa) se destruye y el jugador pierde 3 puntos.

En el siguiente ejemplo, el usuario decide moverse del punto A al punto B, las minas en negritas serán eliminadas

campo
4 4 4
1 1 1
. A
. B
.
3 3 3
.
.
5 5 5
2 2 2

Con estas funciones escriba un programa que realice las siguientes tareas:

  • Crear el campo de 10×10
  • Colocar 5 minas en el campo horizontalmente
  • Generar aleatoriamente una posición original válida para el usuario. Esta posición es válida si está vacía y dentro del campo.
  • Pedir al usuario las coordenadas destino (fila,columna) y actualizar los puntos de acuerdo a las reglas listadas anteriormente.
  • El juego termina cuando el usuario destruye todas las minas o ingresa (‐1,‐1) como coordenadas de destino.
  • Al final debe mostrar cuántas casillas con minas destruyó, cuántos puntos acumuló, cuántas casillas con partes de una mina quedan en el tablero y cuántos tipos de minas quedan en el tablero.

Del ejemplo, el usuario destruyó 2 casillas con minas, hizo 2 puntos, existen 13 casillas con minas en el tablero y quedan 5 tipos de minas.


Referencia: 3Eva_IT2006_T4 Juego planta bombas (buscaminas)

2Eva_IT2015~T3 Números en matriz de puntos

2da Evaluación I Término 2015-2016, Septiembre 2015 /FIEC

Tema 3. (40 puntos) Dado un archivo con una serie de caracteres y los desplazamientos necesarios para ubicar dichos caracteres en un tablero digital, se solicita cargar los caracteres y sus desplazamientos en memoria, y
luego escribir los caracteres en un tablero de una cierta dimensión y en una posición determinada.

Ejemplo de archivo de caracteres:

1:(0,0),(1,0),(2,0)
2:(0,0),(0,1),(0,2),(1,2),(2,2),(2,1),(2,0),(3,0),(4,0),(4,1),(4,2)

El tablero es un arreglo de numpy de dimensiones nxm que inicialmente está en cero.

Implementar las siguientes funciones:

a) Una función cargarInfo(nombreArchivo) que retorna un diccionario con el caracter como clave y una lista de desplazamientos como valor.

b) Una función colocarEnTablero(tablero, posF, posC, caracter) que coloca el caracter en el tablero a partir de la posición dada (posF para la fila inicial, posC para la columna inicial) y retorna un entero que indica lo siguiente:

– Si el caracter se sobrepone a otro ya presente, se devuelve -1,
– si el caracter sale del tablero, se devuelve -2,
– si el caracter puede ser colocado retorna 1.

El caracter está formado por una serie de posiciones que se cuentan a partir de la posición inicial. Por ejemplo, el caracter 2 al colocarse en la posF=1 y posC=2 quedaría como se observa en el siguiente gráfico:

c) Escribir la función contarLibres(tablero) que retorne el número de posiciones libres en el tablero.

Rúbrica: literal a (12 puntos), literal b (18 puntos), literal c (10 puntos)

3Eva_IT2015~T2 Triunfos, empates y derrotas por Goles

3ra Evaluación I Término 2015-2016, Septiembre 2015 /FIEC

Tema 2. (30 puntos) En un campeonato de fútbol intervienen n equipos, siendo n un dato entero menor que 10.

Cada equipo juega contra todos los demás equipos y los goles anotados en cada encuentro han sido almacenados en una matriz nxn como se indica en la tabla ejemplo:

Goles(f,c)
1 2 3 4 5
1 0 3 1 2 1
2 1 0 3 2 3
3 0 2 0 1 1
4 1 0 2 0 1
5 3 4 1 2 0
0
El equipo 1 marco 3 goles al equipo 2,
   1 gol al equipo 3, etc.
El equipo 2 marco 1 gol al equipo 1,
    2 goles al equipo 3, etc.

Se debe implementar las siguientes funciones:

a) Una función tablaPosiciones(matrizGoles) que retorna un diccionario con el equipo como clave y una lista que representará la tabla de posiciones como valor. La lista debe contener la siguiente información: número de goles, partidos ganados, partidos empatados, y partidos perdidos .

Por ejemplo: El equipo 1 ha hecho 6 goles,
ha ganado cero partidos,
ha empatado 1 y ha perdido 2 partidos.

b) Una función ganador(diccPosiciones) que recibe el diccionario con la tabla de posiciones y retorna el ganador del campeonato, que será aquel que haya obtenido el mayor puntaje (empate 1 punto, triunfo 3 puntos, derrota 0 puntos).


Referencia: 3Eva_IT2000_T2 Matriz: puntos por goles en campeonato , 3Eva_IT2002_T1 Triunfos, empates y derrotas por Goles