3Eva_IT2019_T2 Juego del ahorcado

3ra Evaluación I Término 2019-2020, Septiembre 13, 2019

Tema 2. (30 puntos)
Escriba un programa de Python que implemente un juego de adivinanzas de palabras.

Considere que para su programa ya están definidas las siguientes variables y función:

1. Una lista C de las categorías para el juego.

C = ['Transportes', 'Alimentos', 'Deportes', ...],

2. La función perteneceCategoria(palabra, categoria) que retorna True si palabra pertenece a la categoria, False en caso contrario.

3. El diccionario puntajes con el siguiente formato:

puntajes = {'Transportes':{'a':10, 't':4, 'f':5, ...},
            'Deportes': {'a':3, 'z':5, 't':10, ...},
             ... }

Para la implementación del juego considere las siguientes reglas:

r1. El jugador tiene cinco turnos para jugar

Para cada turno:

r2. El programa selecciona aleatoriamente una categoría de la lista C

r3. El programa le pide al jugador que ingrese una palabra para la categoría seleccionada en el paso r2

r4. Si la palabra pertenece a la categoría dada y no ha sido ingresada en un turno anterior, calcule los puntos totales para la palabra.
El puntaje de la palabra es la suma de los puntajes de cada una de sus letras, de acuerdo al diccionario puntajes.
Una letra tendrá puntajes distintos dependiendo de la categoría del paso r2.
Si la palabra no cumple con las condiciones, el jugador no obtiene puntos en ese turno

r5. En cada turno, muestre el puntaje obtenido para la palabra ingresada y el puntaje acumulado

Al final de los cinco turnos:

r6. El jugador habrá ganado si completa un mínimo de 500 puntos, muestre el mensaje correspondiente “Ganó” o “Perdió”.

1Eva_IT2019_T3 Componentes para Vehículos

1ra Evaluación I Término 2019-2020, Julio 5, 2019

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

Tema 3. (50 puntos)

La fábrica ACME se encarga de fabricar diversos componentes para vehículos. Para esto, tiene varias líneas de fabricación.

Asuma que tiene los siguientes arreglos:

P  = np.array(["ct-32", "mto-990", "ct-32"...])
PF = np.array([789, 1500, 900 ...])
PD = np.array([26, 35, 70, ...])
D  = np.array([300, 12, 100, ...])
CF = np.array([1000, 2000, 1100, ...])

Donde​ P​ es un arreglo con los códigos de las piezas fabricadas.
El arreglo​ PF tiene la cantidad total de piezas fabricadas en el día.
El arreglo​ PD indica la cantidad de piezas defectuosas por producto en el día.
El arreglo​ D ​indica el día del año de fabricación de la pieza (1 a 365).
Finalmente, el arreglo ​CF ​indica cuales la capacidad máxima de productos que se pueden fabricar, para cada tipo de pieza, en un día determinado.

​ Un mismo producto se puede fabricar varias veces al año pero no varias veces en un mismo día.

a. ​Escriba una función llamada​ produccionAnual(codigo,P,PF) que retorne la cantidad total de piezas ​código​ fabricadas en el año.

b. El rendimiento de fabricación de un producto se mide de la siguiente forma:

Escriba la función rendimientoPromedio(codigo, P, PF, PD, CF, D)​ que retorna el rendimientopromedio diario para ​codigo​. El rendimiento promedio diario es igual a rendimiento/total_dias_fabricacion.

c. ​Escriba la función ​porcentajeAnualDefecto(codigo, P, PD, PF)​, que retorna el porcentaje de defectos que tiene un ​código​. El porcentaje de defectos se calcula como sigue:

\text{porcentaje defectos} = \frac{\text{total piezas defectuosas}}{\text{total piezas fabricadas}}(100)

d. Escriba la función ​productosDefectuosos(codigos, P, PF, PD, porcentajemax)​, que retorna un arreglo con los códigos de los productos que están en la lista ​codigos​ y que tengan porcentaje de defectos mayor a l valor dado por la variable «porcentajemax»​.

e. ​Escriba la función ​minimoPorcentajeDefecto(P, PF, PD)​, que retorna como resultado el código del producto con el menor porcentaje anual de defectos.

Rúbrica: literal a (6 puntos), literal b (12 puntos), literal c (12 puntos), literal d (10 puntos), literal d (10 puntos).

1Eva_IT2019_T1 Juego de las Ruedas

1ra Evaluación I Término 2019-2020, Julio 5, 2019

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

Tema 1. (20 puntos) Escriba un programa que implemente el “Juego de las Ruedas”.

Para esto genere aleatoriamente una lista de 15 elementos, donde cuatro elementos deben decir “Rueda” y los otros once “X”.

Luego el programa deberá pedirle al jugador que ingrese por teclado índices entre 0 y 14 (​validar) correspondientes a la posición de la rueda.

  • Asuma que el jugador siempre ingresa índices distintos.
  • Si el índice ingresado por el usuario corresponde al de una “Rueda”, gana $1000.
  • Si el jugador encuentra las cuatro “Ruedas” se gana un carro. ​
  • El jugador tiene siete intentos para hallar las cuatro “Ruedas”.
  • El juego termina cuando encuentra las cuatro “Ruedas” o ha usado todos los intentos​.

En cada intento muestre por pantalla el número total de “Ruedas” encontradas hasta el momento. Al final muestre  el premio que recibe el jugador (cantidad de dólares o la palabra “carro” si encontró las cuatro ruedas).

2Eva_IIT2018_T2 Hielo y especies en Ártico-Procesar

2da Evaluación II Término 2018-2019. 2-Febrero-2019 /CCPG001

(Editado para tarea, se manteniene el objetivo de aprendizaje)
Sección 2
. Descripción del Problema y funciones con matrices (pregunta 2,3,4)

Para el resto del examen considere lo siguiente:

Cuadrantes de la matriz

Las matrices pueden ser divididas en cuadrantes, cuatro subregiones de igual tamaño,  denominados:
Q1, Q2, Q3 y Q4
como se muestra en la gráfica:

Asuma que existen las siguientes funciones:

a.  cuadrantes(matriz) que recibe una matriz y devuelve un vector con los cuadrantes de la matriz [Q1, Q2, Q3, Q4], que son a su vez matrices (arreglos).

b. poblacionEspecie(mAnimales, especie) que recibe una matriz de animales, el código de una especie y determina la cantidad total de animales de esa especie en cada uno de los cuadrantes. El resultado es un vector con el siguiente formato [pQ1, pQ2, pQ3, pQ4].


Realice las funciones:

2. densidadHielo(mHielo) que recibe una matriz de hielo y determina la densidad de hielo para cada cuadrante. El resultado es un vector con el  formato [dQ1, dQ2, dQ3, dQ4].
La densidad de un cuadrante es la cantidad total de sus celdas con valor uno (1) dividido para el número total de celdas del cuadrante.

3. especieDominante(mAnimales) que recibe una matriz de animales y encuentra la especie dominante por cuadrante.
El resultado es un vector con los códigos de la especie que más se repite en cada cuadrante: [eQ1, eQ2, eQ3, eQ4]

4. migracionEspecie(mAnimales2009, mAnimales2019, especie) que recibe la matriz de animales del 2009, la matriz de animales del 2019 y el código de una especie. La función debe retornar un vector [a,b] con dos valores:

a.  El primer valor corresponde al cuadrante donde hubo mayor población de animales de la especie en el 2009.
b.  El segundo valor corresponde al cuadrante donde hay mayor población de animales de la especie en el 2019.
Los valores son  los códigos de los cuadrantes: ‘Q1’, ‘Q2′,’Q3’, ‘Q4’

Rúbrica: numeral 2 (10 puntos), numeral 3 (20 puntos), numeral 4 (15 puntos),

1Eva_IIT2018_T3 Compras ‘Black Friday’

1ra Evaluación II Término 2018-2019, Noviembre 23, 2018. CCPG001

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

Tema 3. (50 puntos) El Black Friday inaugura la temporada de compras navideñas con significativas rebajas en muchas tiendas minoristas y grandes almacenes. https://www.profesionalreview.com/2018/09/24/tiendas-donde-comprar-black-friday/

Sucede después de la celebración de Acción de Gracias en Estados Unidos.

Suponga que posee los datos de los productos de una tienda en los siguientes arreglos:

C: códigos de todos los productos (cadenas de caracteres)
P: precios en dólares para cada uno de los productos (valores con decimales).
D: descuentos asociados a cada producto (enteros entre 0 y 100)
S: nombre de la sección donde se encuentra cada producto (cadenas de caracteres)

Se requiere implementar las siguientes funciones:

  1.  calcularPrecio(codigo,C,P,D) que recibe un código y los arreglos C,P,D y retorna el precio final del producto, aplicando el descuento correspondiente.
    Para calcular el precio final, aplique las siguiente fórmula:
    precio_final = precio - precio*\frac{descuento}{100}
  2. calcularTotal(compras,C,P,D) que recibe una lista de compras con los códigos de los productos, los arreglos C,P,D y aplicando todos los descuentos calcula el valor total a pagar, .
  3. hallarSecciones(compras,C,S) que recibe una lista de compras con los códigos de los productos, los arreglos C y S y determina las secciones que deberán visitar durante las compras. La lista de visitas no tiene elementos repetidos.
  4. descuentosPorSección (D,S) que recibe los arrelgos D y S y retorna una tabla con el nombre de cada sección y la cantidad de productos que tienen más del 50% de descuento.

Realice un programa que inicialmente muestre una tabla con las secciones y cantidad de productos con más del 50% de descuento. Luego para las compras, permita ingresar los códigos de los productos, procese y muestre el valor total a pagar y las secciones que necesita visitar. El usuario terminará de ingresar las compras escribiendo ‘fin’.

Ejemplos de arreglos:

C = ['CTR-2424', 'SKU-5675', 'PSS-4542']
P = [ 56.65, 32.00, 22.22]
D = [0, 50, 10]
S = ['Ropa Niños', 'Juguetes', 'Hombre']

Rúbrica: numeral 1 (5 puntos), numeral 2 y 3 (10 puntos c/u), numeral 4 (15 puntos). programa (10 puntos)


Referencias:

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_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).

1Eva_IT2015_T4 Asignar voluntarios a bloques por tipo de capacitación

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

Tema 4. (20 puntos) Para el evento del Parque Samanes por la visita del Papa en Guayaquil el área del Parque se dividió en 32 bloques que tendrían el apoyo de voluntarios capacitados como se describe en el tema anterior.

Realice un algoritmo que reciba el listado de voluntarios y su tipo de capacitación, resultado del tema anterior, y los distribuya para cada bloque del parque por orden de lista y de forma equitativa por tipo de capacitación.

Muestre un nuevo listado indicando los voluntarios asignados a cada bloque.

Ejemplo: para n=8, m=4, bloques=2
 El máximo por tipo de capacitación= 8/4=2
 El máximo por tipo capacitación por cada bloque = (2/2)=1
voluntario capacita [voluntario] bloque [voluntario]
1 3 1
2 1 1
3 4 1
4 3 2
5 1 2
6 2 1
7 2 2
8 4 2

Nota: Un voluntario solo puede atender un bloque. Suponga que n es múltiplo de m.

Sugerencia: inicie asignando solo para un tipo y un bloque, revise el tipo de capacitación de cada voluntario y asigne siempre que el conteo sea menor que máximo por tipo y bloque, caso contrario cambie de bloque, reinicie los contadores y continúe asignando con el nuevo bloque hasta completar todos los voluntarios. Repita el proceso cambiando el tipo.

Rúbrica: ingreso (5 puntos), asignar ordenadamente al bloque (10 puntos), asignar equitativamente por tipo (5 puntos)

1Eva_IT2015_T3 Capacitar a voluntarios seleccionados aleatoriamente

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

Tema 3. (30 puntos) Se registraron voluntarios para colaborar en el evento del Parque Samanes por la visita del Papa a Guayaquil.

Parque Samanes – Guayaquil

Para capacitar a los voluntarios,  identificados por un número, se requiere formar grupos equitativos (igual cantidad) para: orientar a las personas en al ingreso y salida, portar letreros y banderas, distribuir agua, prestar atención a discapacitados y quienes pudiesen tener algún problema de salud, entre otras.

Realice un algoritmo para distribuir a voluntarios en m tipos de capacitación en forma aleatoria, no repetida y equitativa; luego muestre el listado que indica la capacitación que recibirá cada voluntario.

Ejemplo: para n=8, m=4, maxtipo= 8/4 =2

voluntario capacita [voluntario]
1 3
2 1
3 4
4 3
5 1
6 2
7 2
8 4

Nota: Un voluntario solo puede asistir a una capacitación. Suponga que n es múltiplo de m.

Referencia: La república. Quito y Guayaquil ultiman detalles para visita del papa Francisco a Ecuador. 02.07.2015. http://www.larepublica.ec/blog/sociedad/2015/06/30/quito-y-guayaquil-ultiman-detalles-para-visita-del-papa-francisco-a-ecuador/

Rúbrica: ingreso y validación (5 puntos), sorteo capacitación única (5 puntos), cupos de capacitación (15 puntos), mostrar resultados (5 puntos).