1Eva_IT2016_T4 Prueba de escritorio, cadenas

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

Tema 4. (10 puntos)
a. (5 puntos) Dada la secuencia de instrucciones mostrada, realice la prueba de escritorio para la variables: cuantos, donde, lista:

mensaje = 'No basta saber, se debe también aplicar. No es suficiente querer, se debe también hacer. Goethe(1749­-1832)'

largo = len(mensaje)
cual  = 'be'
cuantos = 0
lista = []

donde = -1 
i = 0 
while (i<largo):
    donde = mensaje[i:].find(cual)
    
    if (donde>0):
        cuantos = cuantos+1
        i = i + donde + 1
        lista.append(donde)
    else:
        i = i + 1   

print (cuantos)
print (lista)
cuantos donde lista

b. (5 puntos) ¿Cuál es el resultado luego de ejecutar el siguiente código? Justifique su respuesta mostrando cómo cambian de valor de i  y listas2 durante la ejecución del código.

lista  = [5,3,2,6,7,34,1,23,5,6]
lista2 = []

for i in range(1, len(lista)):
    if (lista[i-1] <= lista[i]) and (lista[i] >= lista[i+1]):
        lista2.append(lista[i])

print(lista2)

A. [34, 23]
B. [3, 34, 23]
C. [3, 6, 7, 34, 23]
D. IndexError: list index out of range

Referencia: Archivo original 1raEvaIT2016.pdf

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

1Eva_IT2016_T1 Buscar sitios web de universidades

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

Tema 1 (20 puntos) La lista mostrrada en el ejemplo contiene los URLs de diferentes sitios Web que han sido visitados.

lista = ["www.espol.edu.ec", 
  "www.google.com", 
  "www.sri.gob.ec", 
  "www.fiec.espol.edu.ec", 
  "www.uess.edu.ec", 
  "www.FIEC.espol.edu.ec", 
  "www.fict.espol.edu.ec", 
  "www.fcnm.Espol.edu.ec", 
  "www.ucsg.edu.ec", 
  "www.Stanford.edu", 
  "www.harvard.edu", 
  "www.stanford.edu", 
  "www.UCSG.edu.ec", 
  "www.google.com.ec", 
  "www.facebook.com", 
  "www.opensource.org", 
  "www.educacionbc.edu.mx",
  "..."]

Los URLs normalmente se repiten y corresponden algunas veces a universidades de Ecuador y otros países.
Note que los URLs no diferencian entre mayúsculas y minúsculas.
Por ejemplo: www.espol.edu.ec y www.ESPOL.edu.ec corresponden al mismo sitio.

Escriba un programa en Python que dada una lista realice lo siguiente:

a. Muestre los nombres o siglas de las universidades que aparecen en la lista (sin repetir).

Del ejemplo mostrado, la salida sería: 
En la lista aparecen 6 universidades:
1. ESPOL
2. UESS
3. UCSG
4. STANFORD
5. HARVARD
6. EDUCACIONBC

b. Muestre la cantidad y los nombres/siglas de universidades de Ecuador que aparecen en la lista.

Del ejemplo mostrado, la salida sería: 
En la lista aparecen 3 universidades de Ecuador:
1. ESPOL
2. UESS
3. UCSG

c. Dado un usuario y el nombre o sigla de la universidad, imprima el correo electrónico asignado. Por ejemplo:

Ingrese el usuario: rafael.bonilla
Ingrese el nombre/sigla de la universidad: UCSG 
El correo electrónico del usuario es: rafael.bonilla@ucsg.edu.ec

Referencia: Archivo original 1raEvaIT2016.pdf

1Eva_IT2015~T4 Prueba de escritorio, listas

1ra Evaluación I Término 2015-2016. Julio, 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.

1. Determine la salida por pantalla del siguiente código:

X = 2
y = 5
z = x + z
print("La suma es ,z")

a. Error: La variable z no ha sido definida
b. La suma es ,z
c. Error: La variable z no se ha inicializado
d. La suma es 7

2. Dado el siguiente segmento de código y las listas A y B, seleccione correctamente la salida por pantalla:

A = [3, 2, 7, 5] 
B = [31, 5, 4, 8, 12, 3, -9, 6] 
C = 0 
N = 3 
for i in range(0, 4) :
    B[A[i]] = B[A[i]] + N 
    C += B[A[i]] 
print(C)

a. 27
b. 33
c. 6
d. Ninguna de las anteriores

1Eva_IT2015~T3 Juego acumula tesoros

1ra Evaluación I Término 2015-2016. Julio, 2015 /FIEC

Tema 3. (45 puntos) En el juego de tablero acumula-tesoros, dos jugadores atraviezan un corredor de 50 metros de largo. 

En cada turno, un jugador avanza lanzando un dado de 6 caras y avanza las casillas de 1 metro correspondiente.

En la nueva posición debe considerar si debe retroceder considerando la reglas de movimiento:

  • Si la nueva posición no ha sido visitada aún, se queda en la casilla y el jugador puede recoger algún elemento siguiendo las reglas de tesoros.
  • Si la nueva posición ya ha sido visitada por el otro jugador, debe retroceder 10 metros.
  • En caso de retroceder, el jugador puede volver al inicio si su posición es menor de 10 metros. El jugador puede evitar retroceder deshaciéndose de un tesoro de los que haya recogido.

Al llegar a cada casilla o posición, a cada jugador se le asigna aleatoriamente uno de los estados mostrados en la tabla.

estado elemento
fortaleza (-1) armas (1)
hambre (-2) víveres (2)
súper-héroe (-3) tesoros (3)

Algunas casillas pueden tener asignado uno los elementos de la tabla. Las reglas de tesoro para recoger el elemento indica que:

  • Para recoger armas, el jugador debe estar en el estado de fortaleza.
  • Para recoger víveres, el jugador debe estar en el estado de hambre.
  • Para recoger tesoros, el jugador debe estar en el estado de súper-héroe.

Al inicio del juego, se ubican los jugadores en la casilla 1. Luego se distribuyen aleatoriamente 8 armas, 8 víveres y 8 tesoros a lo largo del corredor, desde la posición 2 en adelante.

El juego termina cuando uno de los jugadores llega exactamente al final del corredor. Gana el jugador que acumula la mayor riqueza de elementos recogidos durante el juego, calculada como:

Riqueza = \frac{armas}{2}+1)100 + 0.5 víveres+ tesoros

Se requiere implementar las siguientes procedimientos y funciones:

  1. asignarPosicionElementos() que retorna una colección que contiene 3 listas, cada una representando las posiciones en el corredor de las 8 armas, víveres y tesoros, respectivamente.
  2. LanzarDado() que retorna aleatoriamente el valor de una de las caras del dado.
  3. generarEstado() que retorna aleatoriamente uno de los posibles estados.
  4. mostrarElemento(posicion, coleccion) que dada una posición y la colección de posiciones de los elementos imprime en pantalla el tipo de elemento que existe en esa posición.
  5. recogerElemento(estado, posicion,colección) que dada una posición, el estado de un jugador y la colección de posiciones de los elementos retorna el tipo de elemento que se ha recogido (1, 2 ó 3) o 0 si no ha sido posible.
  6. mostrarMensaje(jugador), la cual recibe como parámetro un jugador e muestra en pantalla el estado y posición del jugador.
  7. calcularRiqueza(armas,viveres,tesoreos) que dada una cantidad de armas, víveres y tesoros retorna la riqueza obtenida.

Realice un programa que simule el juego y que siguiendo las reglas del juego descritas, use las funciones implementadas anteriormente.

En cada turno se mostrarán por pantalla:

  • El jugador al que corresponde el turno
  • El resultado del lanzamiento del dado
  • Si se avanza o retrocede
  • la nueva posición del jugador

Al finalizar el juego, se debe declarar al ganador y la riqueza de cada uno.

Rúbrica: inicializar tablero con premios (5 puntos), uso de aleatorios, (5 puntos), control de posiciones (5 puntos), implementar reglas de movimiento (5 puntos), reglas de tesoros (5 puntos), control de fin de juego (5 puntos), seleccion de ganador y riqueza(5 puntos), funciones estructuradas (5 puntos), algoritmo estructurado(5 puntos).

Nota: Enunciado original editado y adaptado para taller en clases.

1Eva_IT2015~T1 Persistencia aditiva de un número entero

1ra Evaluación I Término 2015-2016. Julio, 2015 /FIEC

Tema 1. (25 puntos) La persistencia aditiva de un número entero se calcula sumando sus dígitos y en caso que esta sumatoria tenga más de un dígito, se repetirá el proceso sobre esta, hasta alcanzar un único dígito.

La cantidad de veces que se requiera realizar la sumatoria hasta obtener un único dígito se denomina persistencia aditiva.

Por ejemplo:

  • El número 1234 tiene una persistencia aditiva de 2 (la primera suma de dígitos es 10, luego la segunda suma es 1).
  • El número 5978 tiene una persistencia aditiva de 3 (5978→29→11→2).
  • El número 9 tiene una persistencia aditiva de 0.

Se requiere implementar en Python la función calcularPersistenciaAditiva(), la cual recibe como parámetro un número entero positivo denominado número y retorna su persistencia aditiva.

1Eva_IIT2015_T4 Conjetura débil de Goldbach

1ra Evaluación II Término 2015-2016. Diciembre 8, 2015 /ICM00794

Tema 4. (25 puntos) La llamada “Conjetura débil de Goldbach” propuesta en el año 1742 afirma que todo número impar mayor a 5 se puede expresar como la suma de tres números primos.

Probar la conjetura para todos los números impares hasta el infinito era muy complejo, pero el matemático peruano Harald Helfgott al demostrarla ganó el premio “Cátedra Humboldt” por US$3,9 millones.

Escriba un programa que reciba un número impar mayor a 5 y encuentre tres números primos cuya suma es igual al número impar dado.

Ejemplo: 
Número impar:31
vector de primos hasta impar/2 :
 [ 2 3 5 7 11 13]
Primos seleccionados:
 7+11+13 = 31

Sugerencia: Para generar el vector de números primos, puede usar un bloque que represente el algoritmo del tema anterior. Luego compare el número impar con la suma de cada combinación de tres números del vector de primos y así encontrar la terna buscada.
Referencia: http://www.bbc.com/mundo/noticias/2015/09/150907_ciencia_matematico_problema_271_lb

Rúbrica: ingreso y validación (5 puntos), usar bloque del algoritmo del tema anterior (5 puntos), buscar combinación de 3 números (10 puntos), Respuesta y Algoritmo estructurado (5 puntos)

1Eva_IIT2015_T3 Vector de números primos

1ra Evaluación II Término 2015-2016. Diciembre 8, 2015 /ICM00794

Tema 3 (20 puntos). Para la encontrar una solución a un problema de matemáticas, se requiere disponer de un vector de números primos en el rango entre 2 y un entero positivo m.
Elabore un algoritmo que dado un valor de m, genere el resultado buscado.

 Ejemplo: m=15
 vector de primos hasta m :
 [ 2 3 5 7 11 13]

Rúbrica: Ingreso y validación (5 puntos), verificar primo (5 puntos), generar vector (10 puntos).