3Eva_IIT2015~T4 Prueba de escritorio, listas

3ra 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, justifique su respuesta.

L = [10,30,50,70]
L += L[1:3]
print(L)

a. [10,30,50,70,50,70]
b. [10,30,50,70,30,50]
c. [10,30,50,70]
d. Error: fuera de rango
e. Ninguna de las anteriores

2. Analice el siguiente código y seleccione la respuesta correcta, justifique su respuesta.

d = [0, 1, 2, 3, 4, 5, 6]
e = d
e[-1]= 50
d[2] = 40
print(d)

a. [0, 1, 40, 3, 4, 5, 6]
b. [0, 1, 40, 3, 4, 5, 50]
c. [0, 1, 2, 3, 4, 5, 50]
d. Error: fuera de rango
e. Ninguna de las anteriores

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)

3Eva_IIT2015~T2 Biciespol, archivo de préstamos.txt

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

Tema 2. (25 puntos) El departamento de Bienestar Estudiantil de la ESPOL ha implementado un nuevo servicio de rentas de bicicletas para los estudiantes que desean movilizarse internamente en el campus universitario.

El departamento de Bienestar Estudiantil está interesado en conocer la acogida del servicio por parte de los estudiantes, para ello cuenta con un archivo de datos en texto plano, el cual tiene la información de todas las rentas de bicicletas que se han dado hasta el momento.

El archivo tiene el siguiente formato:

Matrícula|Nombre|# de bicicleta|Hora Inicio|Hora Fin|Multa

A continuación se ofrece un ejemplo del contenido del archivo:

200501010|JUAN PEREZ|10|15|16|2.0
200502020|LUIS CASTRO|24|14|15|3.50
200502020|LUIS CASTRO|30|11|12|0.0
200501010|JUAN PEREZ|9|9|10|1.50
200503030|JUAN PEREZ|27|8|9|4.00

Implemente la función almacenarRentasEstudiantes(nombreArchivo, prefijoSalida, horaInicio, horaFinal), la cual recibe el nombre del archivo donde se encuentra la información de los alquileres y un rango de horas.

Para el rango de horas especificadas, la función calcula las veces que cada estudiante ha prestado una bicicleta, la cantidad y monto total de multas y almacena los resultados de cada estudiante en archivos individuales a sociados con cada uno de ellos.

Los archivos de salida tienen por nombre prefijoSalida_numeroMatricula.txt . Un ejemplo de la llamada a la función sería la siguiente:

almacenarRentasEstudiantes(“rentas.txt”, “reporte”, 11, 16)
reporte_200501010.txt
1|1|2.0
reporte_200502020.txt
2|1|3.50

Referencia: 2Eva_IIT2015_T4 biciespol, prestamos de bicicletas

3Eva_IIT2015~T1 etiquetas tendencia como función

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

Tema 1. (25 puntos) Dado un diccionario con la siguiente estructura:

{"@usuario1":["contenido tuit1 #hashtag1", 
              "contenido #hashtag2 tuit2"],
 "@usuario2":["#hashtag2 contenido tuit n #hashtag n "]

Nota: un tuit tiene uno o más hashtags y éstos pueden estar en cualquier parte del mensaje.

Elabore una función trendTopics(diccionario) que reciba un diccionario con la estructura anterior y retorne un segundo diccionario de hashtags con el número de veces que fueron utilizados en los tuits.

Luego, elabore un programa que muestre por pantalla los Hashtags y sus contadores. Asuma que existe la función crearDiccionario() que retorna un diccionario con los tuits de acuerdo a la estructura presentada arriba.

Ejemplo de salida:

#hashtag2 2
#hashtag1 1
#hashtagn 1

Referencia: 2Eva_IT2016_T1 Tendencias en Twitter

3Eva_IT2015~T4 Prueba de escritorio, diccionario

3ra 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?

foo = {1:'1', 2:'2', 3:'3'}
del foo[1]
foo[1] = '10'
del foo[2]
print(len(foo))

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

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

x = True
y = False
z = False

if (not(x) or y):
    print(1)
elif (not(x) or not(y) and z):
    print(2)
elif (not(x) or y or not(y) and x):
    print(3)
else:
    print(4)

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

3Eva_IT2015~T3 Clasificar secuencia ADN

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

Tema 3. (40 puntos) En un archivo se almacenan varias líneas con la siguiente información: un código genético, el nombre de la persona que lo posee y el código de la Institución a la que pertenece la persona.

Se debe implementar las siguientes funciones:

a) traducirCodigo(cadena). Esta función toma una cadena de caracteres que contiene un código genético y traduce a su cadena correspondiente, según se indica en la siguiente tabla:

AAU N
ACA T
AGA R
GACU D

Asuma que las cadenas contendrán siempre combinaciones de las subcadenas incluidas en la primera columna de la tabla dada.

Por ejemplo: ACA-GAC-AGA-AAU se traduce a TDRN

b) cargarInformación(nombreArchivo). Lee el archivo con el nombre dado y llena dos colecciones con las siguientes cadenas, que serán retornadas:

– La colección codigos contendrá las cadenas leídas y transformadas usando la función traducirCodigo.

– La colección Instituciones contiene una cadena formada como sigue: concatene los caracteres comprendidos entre la posición 2 y la posición 6 (incluidos) y los 3 últimos caracteres del código de la Institución.

Ambas colecciones deben contener elementos únicos.
Por ejemplo: ACME-PRODUCTIONS se almacenará como CME-PONS

c) escribirArchivo(codigos, instituciones, nombreArchivo). Recibe las dos colecciones retornadas en el literal anterior y escribe su contenido en un archivo cuyo nombre se da como parámetro. El formato del archivo lucirá como:

Codigos geneticos unicos:
TDRYN
...
Instituciones unicas:
CME-PNES
...

Referencia: 2Eva_IIT2013_T2 Verificar secuencia ADN

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

3Eva_IT2015~T1 Función de aleatorios no repetidos

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

Tema 1. (20 puntos) Implementar una función que llene una lista de N números aleatorios distintos menores que 100, el número de elementos de la lista es recibido como parámetro.

La función debe retornar la lista y el segundo valor más pequeño almacenado en ella.

Por ejemplo:

Si N es 6, la lista podría ser [52, 2, 86, 13, 15, 79]
 y el segundo valor más pequeño es 13

Referencia: 2Eva_IT2013_T2 Una Tabla de Bingo

3Eva_IIT2015_T4 Orientar código QR (Quick Response Code)

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

Tema 4 (20 puntos). El código QR (Quick Response Code) se usa para administrar inventarios en una gran variedad de industrias.
La imagen del código QR puede ser tomada en cualquier orientación, pero para interpretarla se debe poner en la forma mostrada en la imagen del primer ejemplo.

Codigo QRRealice un programa que lea una matriz de código QR desde un archivo ‘codigoQR.txt’, y usando otra matriz de un archivo ‘referenciaQR.txt’ de tamaño 8×8, realice las rotaciones necesarias para orientar correctamente el código. codigoQR_girado

Nota: Suponga que ‘códigoQR.txt‘ y ‘referenciaQR.txt‘ tienen matrices QR válidas.
Use numpy.loadtxt(‘archivo.txt’, dtype=int) para cargar el archivo, además de las funciones del tema anterior.
Use numpy.array_equal(A, B) que responde 1 para matrices iguales y 0 para diferentes.

Rúbrica: ingreso datos (5 puntos), comparar esquinas (5 puntos), determinar rotación (5 puntos), uso apropiado de funciones (5 puntos)

3Eva_IIT2015_T3 funciones matrices rotar, extraer

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

Tema 3. (25 puntos)
a) Elabore una función rotando(matriz, k) que reciba una matriz de tamaño nxm y realice la rotación de sus datos con el valor k de 1, 2 o 3 que corresponden a los múltiplos de 90° de rotación a la derecha.
Nota: NO use la función numpy.rot90(m, k), se debe mostrar las operaciones realizadas con los elementos de la matriz para la rotación

rotarmatriz

b) Realice una función extraeresquina(matriz, k, t) que dada una matriz, extraiga una parte de la esquina k, de tamaño t.
Los valores de k corresponden a la esquina de interés: 0 (superior izquierda), 1 (superior derecha), 2 (inferior derecha), 3 (inferior izquierda).

Ejemplo:
>>referencia=extraeresquina(codigo,0,8)
… Ver matriz en figura “referencia” del tema siguiente.

Rúbrica: definir función (5 puntos), literal a dimensión resultante (5 puntos), rotación (5 puntos), rotar k veces (5 puntos), literal b (5 puntos)