2Eva_IT2016_T3 Funciones búsqueda y suma

2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001

TEMA 3 (10 PUNTOS)

a) Implemente una función buscar(listaAnidada, valor) que recibe una lista de listas y retorna verdadero o falso (True o False, 1 o 0) si valor existe en listaAnidada.

b) Utilice la función buscar del literal a para determinar si un valor existe en una lista anidada y mostrar por pantalla ‘Valor si existe’ o ‘Valor no existe’.

c) Implemente una función que sume o multiplique valores en una lista anidada.

– Si se invoca a la función únicamente con la lista como argumento, la función debe retornar la suma de los valores.

– Si se invoca a la función con un segundo argumento con valor ‘multiplicar’, la función debe retornar la multiplicación de los valores.

– Para cualquier otro valor para el segundo argumento, la función deberá retornar -1.

Rúbrica: literal a (2.5 puntos), literal b(2.5 puntos), literal c (5 puntos)

Referencia: Archivo original 2Eva_IT2016.pdf

2Eva_IT2016_T2 Distancias entre ciudades de Ecuador

2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001

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

TEMA 2. (60 PUNTOS) Las distancias entre ciudades del Ecuador conectadas directamente por una carretera están almacenadas en el archivo ‘Ecuador_Distancias.txt‘ con el siguiente formato:

Ciudad_de_Partida|Ciudad,Distancia|Ciudad,Distancia|...|Ciudad,Distancia

Por ejemplo:
Ambato|Azogues,280|Babahoyo,212|Pedernales,318
Azogues|Pedernales,555|Babahoyo,125
Pedernales|Ambato,318|Azogues,555
Babahoyo|Ambato,250
...

Implemente las siguientes funciones:

a) cargarDatos(nombreArchivo) que recibe el nombre del archivo como string y retorna el diccionario distancias con el siguiente formato:

distancias = {
 'Ambato':{'Azogues':280,'Babahoyo':212,'Pedernales':318},
 'Azogues':{'Pedernales':555,'Babahoyo':125},
 'Babahoyo':{'Ambato':250} 
 }

b) ciudadesCercanas(distancias, km) donde distancias es el diccionario generado en el literal a) y km es un valor entero positivo . La función retorna una lista de tuplas con todos los pares de ciudades conectadas directamente por una carretera que estén a una distancia menor o igual que el valor de km.
La tupla incluye los valores de ‘ciudad1’, ‘ciudad2’, ‘distancia’ que las separa. Por ejemplo:

>>> ciudadesCercanas(distancias,300) 
retorna: 
[('Ambato','Azogues',280), ('Ambato','Babahoyo',212), 
 ('Azogues','Babahoyo',125), ('Babahoyo','Ambato',250)]

c)  guardarCiudadesCercanas(distancias, listaKms) que recibe el diccionario de distancias y una lista con varias distancias en kilómetros, para generar un archivo con las ciudades separadas a máximo dicha distancia. Por ejemplo:

>>>guardarCiudadesCercanas(distancias, [300, 100, 250]) 
genera los siguientes tres archivos: 
ciudades300.txt, 
ciudades100.txt, 
ciudades250.txt.

El archivo ‘ciudades300.txt’ tendría el siguiente contenido:

Ambato,Azogues,280
Ambato,Babahoyo,212
Azogues,Babahoyo,125
Babahoyo,Ambato,250

 

2Eva_IT2016_T1 Tendencias en Twitter

2da Evaluación I Término 2016-2017. Agosto 30, 2016 /CCPG001

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

Tema 1. (30 PUNTOS) Una tabla denominada tendencias, usada en forma de diccionario, contiene una fecha como clave y un conjunto de etiquetas que representan los tópicos o temas que fueron tendencia en la red social de Twitter.
Por ejemplo:

>>> tendencias = {
 '08-22-2016':{'#Rio2016', '#BSC', '#ECU'}, 
 '08-25-2016':{'#GYE', '#BRA'}, 
 '08-27-2016':{'#YoSoyEspol', '#GYE', '#BSC'}
 }

Implemente las siguientes funciones:

a) cuentaTopics(tendencias, listaFechas) que recibe el diccionario de tendencias y una lista de fechas en formato tipo texto (mm-dd-aaaa).
La función retorna un nuevo diccionario con la etiqueta o hashtag(#) como clave y el número de días que la etiqueta fue tendencia en los días de la lista de fechas. Por ejemplo:

>>> cuentaTopics(tendencias,['08-22-2016', '08-25-2016', '08-27-2016']) 

{'#Rio2106':1, 
 '#GYE':2, 
 '#YoSoyEspol':1, 
 '#BSC':2, 
 '#ECU':1, 
 '#BRA':1}

b) reportaTrending(tendencias, listaFechas) que recibe los datos del literal anterior y muestre en pantalla:
b.1) Las etiquetas que fueron tendencia en todos los días en listaFechas
b.2) Las etiquetas que fueron tendencia en al menos uno de los días en listaFechas

c) reportaTrending(tendencias, fecha1, fecha2) que recibe el diccionario de tendencias y dos fechas (mm-dd-aaaa), para mostrar por pantalla las etiquetas que fueron tendencia o en fecha1 o en fecha2, pero no en las dos.

2Eva_IIT2015~T4 Prueba de escritorio, arreglos

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

Tema 4. (10 puntos) 1. Analice el siguiente código y seleccione la respuesta correcta

import numpy
A = numpy.arange(12).reshape(4,3)
B = A>5
C = A[B]
D = C.reshape(2,3)
print(D[1,1:])

a. [10 11]
b. [[10 11]]
c. [ ]
d. Error: No se puede hacer reshape
e. Ninguna de las anteriores

2. La instrucción A[:,‐2].sum() retorna:

a. 18
b. 22
c. 30
d. 21

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

2Eva_IIT2015~T2 función estudiantes registrados en dos cursos

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

Tema 2. (20 puntos) Implemente una función estudiantesComunes(a,b,c)que recibe:

a. un diccionario con número de matrícula y el nivel del estudiante,
b. un conjunto con el número de matrícula de todos los estudiantes que están tomando Estructuras de Datos,
c. un conjunto con el número de matrícula de los estudiantes que están tomando POO,

y retorne un diccionario (matrícula, nivel) con los estudiantes que están tomando ambas materias.

estudiantesComunes(diccionario, conjuntoEstructuras, conjuntoPOO)

Luego, implemente la función nivelUnico que recibe un diccionario con número de matrícula y nivel, y retorne la colección de niveles únicos extraídos del diccionario.

nivelUnico(diccionario)

2Eva_IIT2015~T1 Cifrado César como función

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

Tema 1 (20 puntos) El cifrado César es una de las técnicas de codificación de textos por sustitución en el que una letra en el texto original es reemplazada por otra letra que se encuentra un número fijo de posiciones más adelante en el alfabeto.

Por ejemplo, con un desplazamiento de 2 posiciones, la A sería sustituida por la C (situada 2 lugares a la derecha de la A), la B sería reemplazada por la D, etc. Se supone que el alfabeto es circular de modo que, a todos los efectos, a continuación de la Z comienzan de nuevo las letras A, B, C, etc.

Se le solicita escribir la función recursiva cifrarCesar que recibe como parámetros una cadena de caracteres escritos en minúsculas, el desplazamiento y una lista con las letras del alfabeto y retorna una nueva cadena con el texto codificado. Debe tener en cuenta que sólo se codifican los caracteres correspondientes a las letras del alfabeto, el resto de caracteres (espacios en blanco, signos de puntuación, números, etc) permanecerán inalterados.

Ejemplo:
función resultado
cifrarCesar(“hola mundo”,3,alfabeto) “krod pxqgr”
cifrarCesar(“xyz”,2,alfabeto) “zab”
cifrarCesar(“el yoyo, cuesta $5”,4,alfabeto) “ip cscs, gyiwxe $5”

Referencia: 2Eva_IIT2012_T2 Cifrado César de FCNM

2Eva_IT2015~T4 Prueba de escritorio, diccionario

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

Tema 4. (10 puntos) Analice el código fuente de los programas que se muestran a continuación. Seleccione la respuesta correcta y justifique brevemente su respuesta.

a. ¿Cuál será la salida del siguiente programa?

confusion = {}
confusion[1] = 1
confusion['1'] = 2
confusion[1] += 1

suma = 0
for k in confusion:
    suma += confusion[k]

print (suma)

A. 1
B. 2
C. 3
D. 4

b. ¿Cuál será la salida del siguiente programa?

def addItem(listaParam):
    listaParam += [1]

milista = [1,2,3,4]
addItem(milista)
print(len(milista))

A. 1
B. 4
C. 5
D. 8

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)

2Eva_IT2015~T2 Funciones con cadenas, sufijos y contador de letras.

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

Tema 2. (25 puntos) Desarrolle las siguientes funciones:

a) procesarSufijos(palabra, sufijo). Esta función recibe una palabra y un sufijo. El sufijo se remueve y se añade la letra “r” al final. Ejemplo:

procesarSufijos(“cocinamos”, “mos”) retorna cocinar
procesarSufijos(“perderia”, “ria”) retorna perder

b) contarCaracteres(listaPalabras, nombreArchivo). Esta función recibe una lista de palabras y crea un archivo con el nombre dado como parámetro. En el archivo se almacena la letra y cuántas veces esa letra aparece en las palabras analizadas. Ejemplo:

contarCaracteres([“hola”, “mundo”, “espol”])

Archivo generado:

h,1
o,3
l,2
a,1
m,1
u,1
n,1
d,1
e,1
s,1
p,1

Rúbrica: literal a (8 puntos), literal b (17puntos)


Referencia: 3Eva_IIT2014_T3 Juego de palabras encadenadas , Alfabeto PMF