Autor: Edison Del Rosario

  • 1Eva_IIT2013_T2 Números palíndromo con Python

    1ra Evaluación II Término 2013-2014. Diciembre 3, 2013 /ICM00794

    Tema 2. (25 puntos)

    Un número palíndromo es un número que se lee igual de izquierda a derecha que de derecha a izquierda.

    Realice un algoritmo que permita:

    Ejemplo:
     Números palíndromo: 2002, 1991, 2112.
     No son números palíndromo: 2013, 1492

    a) Invertir los dígitos de un número y verificar si el número es palíndromo

    b) Buscar los números palíndromo con más de dos cifras y que sean menores a 1 millón.

    Rúbrica: literal a (10 puntos), literal b, manejo de rangos (5 puntos) y respuesta (5 puntos). Algoritmo integrado (5 puntos)

  • 1Eva_IT2013_T2 Código de barras- simbología discreta

    1ra Evaluación I Término 2013-2014, Julio 2, 2013 /ICM00794

    Tema 2. (25 puntos) El código de barras utiliza líneas paralelas verticales (barras y espacios) que representan información en su equivalente binario.

    El código es muy usado en los puntos de ventas y es “leído” por un dispositivo láser (scanner).

    Para facilitar la lectura por scanner se usa el método de “simbología discreta”, en el que se marca el inicio, separación y fin de los datos con  la secuencia barra/espacio/ barra (101) por cada grupo de 10 bits (dígitos binarios).

    Elabore un algoritmo que permita cambiar un código de producto conformado por dos números de 3 cifras a su equivalente en código de barras usando simbología discreta.

    >> codigobarras
    1er Número: 725
    2do Número: 673
    101 1011010101 101 1010100001 101

    Nota Matlab: Mostrar todos los dígitos fprintf('% .0d ', número).
    Referencia: http://es.wikipedia.org/wiki/C%C3%B3digo_de_barras
    Rúbrica: Cambio decimal a binario (10 puntos), simbología discreta (10 puntos), resultado (5 puntos).

    Referencia: Cadenas de Supermercados - Gigantes de la comida. History Latinoamérica. 18 Julio 2025. minuto 8:15 códigos de barra.

  • s1Eva_IIT2007_T2 Juego de la Ruleta

    Ejercicio: 1Eva_IIT2007_T2 Juego de la Ruleta

    [ algoritmo ] [ diagrama flujo ]

    La simulación de la ruleta se realiza con la generación de un número entero aleatorio entre 1 y 37.

    ruleta = int(rnd.random()*37)+1
    

    Para desarrollar el ejercicio, inicie resolviendo para un solo jugador y un solo intento y mostrando si ganó o no.

    Luego continúe incorporando la cantidad de intentos para un solo jugador,

    Incorpore la petición de apuestas de los jugadores, antes de hacer rotar la ruleta en un arreglo o lista, para luego poder determinar los resultados de ganadores.

        # Ingreso de apuestas
        j = 1
        while (j<=n):
            print('jugador (',j,') ')
            apuesta[j] = int(input('  número apostado: '))
            j = j
    

    Puede usar contadores para el número de veces ganó cada jugador en los m intentos.

    Siguiendo el esquema anterior podrá resolver el ejercicio para todas las rondas con todos los jugadores.

    Tarea: Completar el algoritmo para el número que salió la menor cantidad de veces.

    [ algoritmo ] [ diagrama flujo ]
    ..


    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2007_T2 Juego de la Ruleta
    # Propuesta: edelros@espol.edu.ec
    
    import numpy as np
    import random as rnd
    
    # INGRESO
    n = int(input('¿cuántos jugadores?: '))
    m = int(input('¿cuántas rondas?: '))
    
    gana    = np.zeros(n+1, dtype=int)
    apuesta = np.zeros(n+1, dtype=int)
    
    ronda = 1
    while (ronda<=m):
    
        # Ingreso de apuestas
        j = 1
        while (j<=n):
            print('jugador (',j,') ')
            apuesta[j] = int(input('  número apostado: '))
            j = j + 1
    
        ruleta = int(rnd.random()*37)+1
        print('Número ruleta: ', ruleta)
    
        # Revisa ganadores
        j = 1
        while (j<=n):
            if (ruleta==apuesta[j]):
                gana[j] = gana[j]+1   
            j = j + 1
             
        ronda = ronda + 1
    
    # SALIDA
    print('Los resultados son:')
    j = 1
    while (j<=n):
        print(' jugador(',j,') ganó ',gana[j],' veces \n')
        j = j + 1
    

    Tarea: validar que el número de la apuesta esté en el tablero.

    un ejemplo de ejecución:

    cuantos jugadores: 2
    cuantas rondas: 2
    jugador ( 1 ) 
      número apostado: 3
    jugador ( 2 ) 
      número apostado: 24
    Número ruleta:  36
    jugador ( 1 ) 
      número apostado: 34
    jugador ( 2 ) 
      número apostado: 12
    Número ruleta:  34
    Los resultados son:
     jugador( 1 ) ganó  1  veces 
    
     jugador( 2 ) ganó  0  veces 
    
    >>> 
    

    [ algoritmo ] [ diagrama flujo ]
    ..


    Diagrama de Flujo

    [ algoritmo ] [ diagrama flujo ]


    Propuesta de solución con diagrama de flujo, Python y otra versión con Matlab

    ejercicios resueltos Python 1eva_iit2007_t2 pdf

    ejercicios resueltos Matlab 1eva_iit2007_t2 pdf

  • 1Eva_IT2013_T1 Primos gemelos

    1ra Evaluación I Término 2013-2014, Julio 2, 2013 /ICM00794

    Tema 1. (25 puntos)
    En mayo de 2013 un matemático presentó formalmente una demostración a la Conjetura de los Primos Gemelos.

    Se denominan “números primos gemelos” aquellos números primos consecutivos separados por dos unidades.

    Ejemplo: Primos gemelos entre 2 y 50
    3 y 5,  5 y 7, 11 y 13, 17 y 19, 29 y 31, 41 y 43, ...
    Parejas: 6

    Escriba un algoritmo para determinar:
    ¿Cuántas parejas de primos gemelos existen entre 2 y n?

    Rúbrica: Primos [2, n] (10 puntos), determinar primos gemelos (10 puntos), contar parejas (5 puntos)

    Referencia: www.unocero.com/2013/05/17/primera-prueba-de-que-muchos-numeros-primos-gemelos-vienen-en-pares/

    Las Matemáticas tienen una Terrible Falla. Veritasium en español. 6 junio 2021. tiempo [0 a 1.06].

  • 1Eva_IIT2013_T1 Verificar Bisiesto

    1ra Evaluación II Término 2013-2014. Diciembre 3, 2013 /ICM00794

    Tema 1 (15 puntos) En el calendario gregoriano, aplicable  desde el año 704, un año es bisiesto si es divisible entre 4, a menos que sea divisible para 100. Pero un año también es bisiesto si es divisible para 100 y además es divisible para 400.

    Por ejemplo: los años 1700, 1800, 1900 y 2100 no son bisiesto,
    pero son bisiestos: 1600, 2000 y 2400.

    Realice un algoritmo para determinar si un año dado, es o no bisiesto.
    Rúbrica: ingreso y validación (5 puntos), verificar bisiesto (8 puntos), bloque de salida (2 puntos)

  • s1Eva_IIT2007_T1 Hormiga busca arroz

    Ejercicio: 1Eva_IIT2007_T1 Hormiga busca arroz

    Algoritmo: [ un paso/turno] [ varios pasos/turno] [ diagrama Flujo ]
    [ repita-hasta ]

    Algoritmo con un paso por cada turno

    Considere ingresar la ubicación inicial (xh,yh) de la hormiga y que la posición del arroz (xa,ya) sea fija.

    Suponga que la hormiga no ha encontrado el grano de arroz, se encuentran distantes.

    Para la dirección del movimiento de la hormiga  se genera un número aleatorio usado para cambiar un valor de coordenada de la hormiga.

    Luego se revisa si la hormiga encontró el grano de arroz al comparar que  las coordenadas sean iguales

    Cuente un turno completado, y repita el procedimiento hasta que se completen los 100 turnos o se haya encontrado el grano de arroz. Al final muestre los resultados requeridos.

    Algoritmo: [ un paso/turno] [ varios pasos/turno] [ diagrama Flujo ]
    [ repita-hasta ]
    ..


    Algoritmo en Python con un paso por cada turno

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1Eva_IIT2007_T1 Hormiga busca arroz
    import random as rnd
    
    # INGRESO
    xa=int(input(' x arroz: '))
    ya=int(input(' y arroz: '))
    
    xh=int(input(' x hormiga: '))
    yh=int(input(' y hormiga: '))
    
    # PROCEDIMIENTO
    encontro = 0
    t = 0
    while not((xh==xa and yh==ya) or t>100):
        
        # dirección de movimiento de hormiga
        d = int(rnd.random()*4)+1
        
        if (d==1):
            yh = yh+1
        if (d==2):
            yh = yh-1
        if (d==3):
            xh = xh+1
        if (d==4):
            xh = xh-1
    
        # Revisa si lo encontró
        if (xh==xa and yh==ya):
            encontro = 1
        t = t + 1
    
    print('¿encontró?: ')
    print(encontro)
    print('pasos realizados: ')
    print(t)
    
    

    Ejemplo de respuesta con el algoritmo

     x arroz: 5
     y arroz: 3
     x hormiga: 4
     y hormiga: 2
    ¿encontró?: 
    1
    pasos realizados: 
    34
    >>> 
    
     x arroz: 8
     y arroz: 8
     x hormiga: 3
     y hormiga: 2
    ¿encontró?: 
    0
    pasos realizados: 
    101
    

    Algoritmo: [ un paso/turno] [ varios pasos/turno] [ diagrama Flujo ]
    [ repita-hasta ]
    ..


    Algoritmo en Python con varios pasos por turno

    Al ejercicio anterior se le añade una variable "pasos" para que mediante un aleatorio sea diferente en cada turno.

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
    # Propuesta de solución. edelros@espol.edu.ec
    
    import random as rnd
    import math
    
    xh = int(input('coordenada x hormiga: '))
    yh = int(input('coordenada y hormiga: '))
    
    # PROCEDIMIENTO
    
    # posición del arroz fija
    xa = 10
    ya = 8
    
    # distancia inicial
    dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)
    
    encontrado = 0
    turno = 0
    while (turno<100 and encontrado==0):
        
        direccion = int(rnd.random()*4)+1
        pasos = int(rnd.random()*3)+1
    
        if direccion==1:
            yh = yh + pasos
        if direccion==2:
            yh = yh - pasos
        if direccion==3:
            xh = xh + pasos
        if direccion==4:
            xh = xh - pasos
            
        if (xh==xa and yh==ya):
            encontrado = 1
    
        distancia = math.sqrt((xh-xa)**2+(yh-ya)**2)
        if distancia>dmayor:
            dmayor = distancia
            
        turno = turno + 1
    
    # SALIDA
    print('estado encontrado: ')
    print(encontrado)
    print('turnos simulados: ')
    print(turno)
    print('distancia más lejana: ')
    print(dmayor)
    
    

    Resultado del algoritmo:

    coordenada x hormiga: 2
    coordenada y hormiga: 1
    estado encontrado: 
    1
    turnos simulados: 
    92
    distancia más lejana: 
    23.323807579381203
    >>> 
    coordenada x hormiga: 0
    coordenada y hormiga: 0
    estado encontrado: 
    0
    turnos simulados: 
    100
    distancia más lejana: 
    38.2099463490856
    >>> 
    

    En la solución con Python, se usarán las librerías básicas de aleatorios (random) y matemáticas (math). Una alternativa a esta solución es usar la librería numérica Numpy que se descarga e instala como un módulo complementario.

    Algoritmo: [ un paso/turno] [ varios pasos/turno] [ diagrama Flujo ]
    [ repita-hasta ]
    ..


    Diagrama de Flujo


    Algoritmo: [ un paso/turno] [ varios pasos/turno] [ diagrama Flujo ]
    [ repita-hasta ]
    ..


    Algoritmo en Python: Bucle Repita-Hasta:

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
    # Propuesta de solución. edelros@espol.edu.ec
    
    import random as rnd
    import math
    
    xh = int(input('coordenada x hormiga: '))
    yh = int(input('coordenada y hormiga: '))
    
    # PROCEDIMIENTO
    
    # posición del arroz fija
    xa = 10
    ya = 8
    
    # distancia inicial
    dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)
    
    encontrado = 0
    turno = 0
    while not(turno>=100 or encontrado!=0):
        
        direccion = int(rnd.random()*4)+1
        pasos = int(rnd.random()*3)+1
        
        if direccion==1:
            yh = yh + pasos
        if direccion==2:
            yh = yh - pasos
        if direccion==3:
            xh = xh + pasos
        if direccion==4:
            xh = xh - pasos
            
        if (xh==xa and yh==ya):
            encontrado = 1
    
        distancia = math.sqrt((xh-xa)**2+(yh-ya)**2)
        if distancia>dmayor:
            dmayor = distancia
    
        turno = turno+1
    
    # SALIDA
    print('estado encontrado: ')
    print(encontrado)
    print('turnos simulados: ')
    print(turno)
    print('distancia más lejana: ')
    print(dmayor)
    

    Algoritmo: [ un paso/turno] [ varios pasos/turno] [ diagrama Flujo ]
    [ repita-hasta ]


    Propuesta de solución con diagrama de flujo, Python y otra versión con Matlab

    ejercicios resueltos Python 1eva_iit2007_t1 pdf

    ejercicios resueltos Matlab 1eva_iit2007_t1 pdf

  • 1Eva_IT2012_T4 Ajustar tarifas eléctricas invierno/verano

    1ra Evaluación I Término 2012-2013. Julio 03, 2012 /ICM00794

    Tema 4 (30 puntos). Una vez terminado el invierno, el subsidio de la tarifa eléctrica residencial cambia para los clientes residenciales en la costa. medidor eletrico

    La tarifa se establece acorde a los consumos en pliego tarifario mostrado.

    Tarifa Eléctrica
    Consumo entre (KWh) Invierno ($) Verano ($) Cambio ($)
    < 130 0.04 0.04 0.00
    130 a 500 0.08 0.11 0.03
    500 a 700 0.11 0.13 0.02
    superior a 700 0.16 0.26 0.10

    Realice un algoritmo que permita para un mes cualquiera:

    a) Ingresar el consumo de n clientes residenciales,

    b) Calcular el valor facturado y el incremento para cada cliente en verano,

    c) Mostrar el total facturado en el mes y

    d) ¿Cuál es el cliente que más valor se le ha facturado? (suponga que existe solo uno).

    Consumo por cliente residencial
    Cliente consumo verano (KWh) Facturado verano ($) Incremento ($)
    1 200 22.00 6.00
    2 600 78.00 12.00
    3 400 44.00 12.00
    4 800 208.00 80.00
    ... ... ... ...
    Total facturado: $ 352.00
     Cliente más valor facturado: 4

    Sugerencia: Usar arreglos solo para tablas de cliente

    Referencia: “Terminado el invierno ajustan tarifas eléctricas”. www.eluniverso.com 09.06.2012. Pliego tarifario resumido.

    Rúbrica: literal b y d (10 puntos), literal a y c (5 puntos).

  • 1Eva_IIT2012_T4 Informe de pasantías

    1ra Evaluación II Término 2012-2013. Noviembre 27, 2012 /ICM00794

    TEMA 4 (30 puntos) Para las pasantías profesionales, los “estudiantes” de la ESPOL (universidad) se inscriben indicando en cual “empresa” de las disponibles quisieran hacer las prácticas.

    Para el registro, los estudiantes se encuentran codificados de 1 a n y las empresas están codificadas de 1 a m.

    Se requiere un reporte de los registros que muestre:

    a) La empresa que tiene registrados más estudiantes (pasantes), suponga que es una sola,

    b) ¿Cuántas empresas aún no registran pasantes?, si todas tienen pasantes, muestre 0, y

    c) La cantidad promedio de pasantes por empresa (considerando solo las empresas en las que hay registrados pasantes)

    Elabore un algoritmo que permita ingresar los datos para el registro acorde a los valores de n y m, realice los cálculos necesarios y muestre el reporte requerido.

    inscripción n
    estudiante 1 2 3 4 5
     empresa 4 1 4 2 4
    control de inscritos m
     empresa  1 2 3 4
     cantidad  1 1 0 3
    Empresa:
     más pasantes (fila) : 4
     sin pasantes: 1
     Promedio de pasantes/empresa: 5/3

    Rúbrica: Ingreso (5 puntos), cantidad de estudiantes/empresa (5 puntos), literal a (10 puntos), literal b (5 puntos), literal c (5 puntos).

  • 1Eva_IT2012_T3 Determinar inventario máximo y mínimo

    1ra Evaluación I Término 2012-2013. Julio 03, 2012 /ICM00794

    Tema 3 (20 puntos)inventario control
    En el control de INVENTARIO DE PRODUCTOS que se lleva en una bodega, se tiene un modelo donde se determina la cantidad máxima y mínima de stock por producto.

    Considerando el siguiente modelo:

    E_{min}=C_{min}*Tr E_{max} = (C_{max}*Tr) + E_{min} CP = E_{max} - E

    donde:

    Tr = Tiempo de reposición de inventario (en días)
    Cmax = Consumo máximo (unidades diarias)
    Cmin = Consumo mínimo (unidades diarias)
    Emax = Existencia máxima
    Emin = Existencia mínima (o de seguridad)
    CP = Cantidad de pedido
    E = Existencia actual

    Escriba un ALGORITMO que permita:

    a) Registrar los datos de Consumo Máximo (Cmax), Consumo Mínimo (Cmin), Existencia actual (E) y Tiempo de reposición (Tr) de inventario para un listado de Nproductos.

    b) Luego aplicando el modelo mostrado, determine la Cantidad de Pedido (CP) para cada producto.

    c) Muestre aquellos productos donde la cantidad de pedido (CP) supere en un 70% la existencia actual.

    Rúbrica: Ingreso de datos en arreglos (5 puntos), calculo de pedidos (8 puntos), Salida (7 puntos)

  • 1Eva_IIT2012_T3 Hundir el barco enemigo

    1ra Evaluación II Término 2012-2013. Noviembre 27, 2012 /ICM00794

    Tema 3 (30 puntos) El juego “Hundir el Barco Enemigo” consiste en realizar disparos desde un cañón defensor para hundir un barco rival mientras éste intenta esquivarse.

    Considere en un plano cartesiano con las posiciones de ambos.

    El cañón permanece en su ubicación inicial, mientras que el barco rival para evadir el disparo puede desplazarse aleatoriamente x metros (entre 1 y 3) y en una dirección aleatoria hacia el norte, sur, este u oeste.

    Elabore un algoritmo que permita ingresar la ubicación inicial de avistamiento del barco rival (bx,by), luego registre la ubicación a donde el cañón dispara (cx,cy).

    Simule el movimiento de evasión del barco y disparo del cañón, para luego verificar si se alcanzó el objetivo de “Hundir el Barco Enemigo”.
    El juego se repite para n intentos de disparo y evasión, al final muestre el resultado del juego.

    eje y 5 barco pirata dibujo
    4
    3
    2
    1
    cañon pirata 1 2 3 4 5 eje x
    ¿Cuántas municiones? 3
     Barco ¿Coordenada bx?: 5
     Barco ¿Coordenada by?: 4
     Intento 1 
     Disparo ¿Coordenada cx?: 5
     Disparo ¿Coordenada cy?: 3
     Movimiento: Sur , 2 casillas
     Disparados: 1
     Hundido: 0
     Intento 2
     …

    Rúbrica: Ingreso de Coordenadas (5 puntos), control de disparos (5 puntos), simulación de evasión (5 puntos), verificar hundimiento (5 puntos). Resultados finales (5 puntos), Algoritmo integrado y estructurado (5 puntos).