Autor: Edison Del Rosario

  • s3Eva_IT2006_T2 Intercalar palabras pastestring(a,b,p)

    Ejercicio: 3Eva_IT2006_T2 Intercalar palabras pastestring(a,b,p)

    Resultado obtenido:

    >>> pastestring('FUNDAMENTOS','PROG',4)
    'FUNDPROGAMENTOS'
    >>> 
    

    Algoritmo en Python

    # 3Eva_IT2006_T2 Intercalar palabras pastestring(a,b,p)
    
    def pastestring(a,b,p):
        n = len(a)
        m = len(b)
        cadena = a[0:p]+b
        cadena = cadena + a[p:]
        return(cadena)
    

    Tarea: verificar que p sea menor que el tamaño de a.

  • 3Eva_IT2006_T1 Ackerman recursiva

    3ra Evaluación I Término 2006-2007, Septiembre 12, 2006 /ICM00794

    Tema 1. (20puntos) Debido a su definición, profundamente recursiva, la función de Ackermann se utiliza con frecuencia para comparar compiladores en cuanto a su habilidad para optimizar la recursión. Dicha función se define a continuación:

    Ackerman ecuacion

    a) Realice una función ackerman(m, n) en matlab, que encuentre el resultado de Ackerman para n y m dados.

    b) Realice la prueba de escritorio para ackerman(1, 2).

  • 3Eva_IT2005_T4 Tabla de Pozo millonario

    Mejoramiento I Término 2005 - 2006. Septiembre 13, 2005 /ICM00794

    Tema 4 (15 puntos) En el juego del Pozo Millonario, similar al juego de bingo, una tabla se genera con 15 números aleatorios entre 1 y 25. tabla de bingo pozo millonario

    Realice un algoritmo para generar una tabla de Pozo Millonario considerando que:

    • Los números en la tabla NO son repetidos
    • Los números se presentan ordenados de forma ascendente

    Referencia: http://www.loteria.com.ec

    Rúbrica:  Números NO repetidos (10 puntos). Presentados ordenados en forma ascendente (5 puntos).

  • s3Eva_IT2005_T4 Tabla de Pozo millonario

    Ejercicio: 3Eva_IT2005_T4 Tabla de Pozo millonario

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2005_T4 Tabla de Pozo millonario
    # Propuesta de solucion: edelros@espol.edu.ec
    
    import numpy as np
    import random as rnd
    
    # INGRESO
    n = int(input('seleccionar:'))
    m = int(input('de cuantos:' ))
    
    # PROCEDIMIENTO
    # Ninguno seleccionado
    tabla = np.zeros(m+1,dtype=int)
    
    # sorteando sin repetir
    i = 1
    while not(i>n):
        sorteado = int(rnd.random()*m)+1
        if (tabla[sorteado]==0):
            tabla[sorteado] = 1
            i = i + 1
    
    #SALIDA
    k = 1
    print('Los numeros de la tabla son:')
    while not(k>m):
        if (tabla[k]==1):
            print(k)
        k = k + 1
    

    resultado del algoritmo

    seleccionar: 10
    de cuantos: 20
    Los numeros de la tabla son:
    1
    3
    4
    5
    10
    11
    12
    16
    17
    19
    >>> 
    

    Tarea: extraer los sorteados en otro arreglo que contenga solo los números seleccionados

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

    ejercicios resueltos Python mejo_it2005_t4 pdf

    ejercicios resueltos Matlab mejo_it2005_t4 pdf

  • 3Eva_IT2005_T3 Calcular millas de viajero

    Mejoramiento I Término 2005 - 2006. Septiembre 13, 2005 /ICM00794

    Tema 3. (30 puntos).Para el cálculo de las millas de viajero frecuente promocionadas por las aerolíneas, se requiere las coordenadas cartesianas de un mapa que corresponden a las ciudades entre las que el viajero usa un boleto.

    a) Escriba una función distancia(x1,y1,x2,y2) que dados dos puntos cartesianos, que retorne la distancia entre ellos. viaje en forma de poligono cerrado

    b) Escriba un programa que en una estructura almacene los nombres de las ciudades y los puntos (x,y) por donde el viajero inicia su viaje, sigue su recorrido y retorna a su ciudad de origen y calcule, la distancia total recorrida entre todos los puntos usando la función distancia.

    Ciudad X Y Distancia Recorrida
    Guayaquil 0 0 0
    Riobamba 5 1 5.099
    Quito 4 3 2.236
    Manta 1 2 3.162
    Guayaquil 0 0 2.236
    Millas Acumuladas: 12.733
  • 3Eva_IT2005_T2 Juego biológico

    Mejoramiento I Término 2005 - 2006. Septiembre 13, 2005 /ICM00794

    Tema 2. (30 puntos) Para simular un juego biológico se almacena en una matriz nxn números aleatorios 0 o 1. El 1 corresponde a un ser vivo.

    a) Determine el porcentaje de seres vivos generados.

    Ejemplo para a)
    0 1 0 1
    0 1 0 0
    1 1 1 0
    0 1 0 0
    0 0 0 1
    0 0 0 0

    b) Para el primer ciclo de análisis, busque en la matriz si existen seres vivos rodeados en sus cuatro lados de otros seres vivos. En este caso, se considera superpoblación, por lo que se cambia el ser vivo de 1 a 0. Determine el nuevo porcentaje de seres vivos.

    Ejemplo para a)
    0 1 0 1
    0 1 0 0
    1 0 1 0
    0 1 0 0
    0 0 0 1
    0 0 0 0

    Rúbrica: Literal a (15 puntos), literl b (15 puntos)

  • s3Eva_IT2005_T2 Juego biológico

    Ejercicio: 3Eva_IT2005_T2 Juego biológico

    Resultado esperado:

    tamaño de matriz nxn:5
    cantidad seres vivos: 20
    [[1 1 1 1 0]
     [1 1 1 0 1]
     [0 1 1 1 1]
     [1 1 1 1 1]
     [0 0 1 1 1]]
    porcentaje inicial: 80.0
    nueva matriz:
    [[1 1 1 1 0]
     [1 0 1 0 1]
     [0 1 0 1 1]
     [1 1 1 0 1]
     [0 0 1 1 1]]
    porcentaje final: 68.0
    >>> 
    

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2005_T2 Juego biológico
    # propuesta: edelros@espol.edu.ec
    # por ser semejante, se usa la funcion de: 
    #  3Eva_IT2006_T4 Juego planta bombas (buscaminas)
    import numpy as np
    import random as rnd
    
    def plantabombas(m,n):
        campo = np.zeros(shape=(n,n),dtype=int)
        bomba = 1
        while not(bomba>m):
            fila = int(rnd.random()*n)+0
            columna = int(rnd.random()*n)+0
            if (campo[fila,columna]==0):
                campo[fila,columna] = 1
                bomba = bomba + 1
        return(campo)
    
    def porcentaje(campo):
        tamano = np.shape(campo)
        n = tamano[0]
        m = tamano[1]
        suma = 0
        fila = 0
        while not(fila>=n):
            columna = 0
            while not(columna>=m):
                suma = suma + campo[fila,columna]
                columna = columna + 1
            fila = fila + 1
        z = 100*suma/(n*n)
        return(z)
    
    # PROGRAMA  literal a ------------------
    n = int(input('tamaño de matriz nxn:'))
    vivos = int(input('cantidad seres vivos: '))
    
    # PROCEDIMIENTO
    biologico  = plantabombas(vivos,n)
    participa1 = porcentaje(biologico)
    
    # SALIDA
    print(biologico)
    print('porcentaje inicial:', participa1)
    
    # PROGRAMA  literal b ------------------
    fila = 1 # desde segunda fila
    while not(fila>=(n-1)): # hasta penultima fila
    
        columna = 1 # desde segunda columna
        while not(columna>=(n-1)): # hasta penultima columna
    
            # suma celda izquierda y derecha
            suma = biologico[fila-1,columna]+ biologico[fila+1,columna]
            # suma celda arriba y abajo
            suma = suma + biologico[fila,columna-1]+biologico[fila,columna+1]
            
            if suma >=4: # sobrepoblacion, en la celda no se sobrevive
                biologico[fila,columna] = 0
                
            columna = columna + 1
            
        fila = fila + 1
    
    participa2 = porcentaje(biologico)
    print('nueva matriz:')
    print(biologico)
    print('porcentaje final:', participa2)
    
  • 3Eva_IT2005_T1 Determinar si corresponde a relación o función

    Mejoramiento I Término 2005 - 2006. Septiembre 13, 2005 /ICM00794

    Tema 1. (25 puntos) Dos vectores contienen n pares ordenados (x, y).

    Realice un programa en Matlab para determinar si la correspondencia de x a y es una relación o una función matemática.

    Sugerencia: Verifique que todos los valores de x sean diferentes entre si.

  • 3Eva_IIIT2004_T4 Enmascara frase cambiando pareja de letras

    Mejoramiento III Término 2004 - 2005. Marzo, 2005 /ICM00794

    Tema 4. Un esquema simple para enmascarar un mensaje consiste en intercambiar cada par de caracteres.

    Ejemplo: 
    con la frase: 'TE SALUDO', 
    se obtiene; ' ETSLADUO'

    Escriba un programa que lea desde el teclado una línea de texto, enmascárela y almacénela en un archivo llamado 'mensaje.txt'

    Escriba un segundo programa que lea del archivo 'mensaje.txt' la línea de texto, la desenmascare y muestre en pantalla el texto.

  • 3Eva_IIIT2004_T3 Elección de representante, cualquier candidato

    Mejoramiento III Término 2004 - 2005. Marzo, 2005 /ICM00794

    Tema 3. Un grupo de n personas: 1,2, 3, ... , n, deben elegir su representante mediante una votación. votacion

    Cualquiera de ellos puede ser candidato, pero para ganar la elección requiere tener más de la mitad de los n votos.

    Escriba un programa que lea los n votos en un vector denominado votos y lo envíe a una función x=gana(votos), que usted debe escribirla, la cual entrega en x el número del candidato ganador.
    Si no hay ganador, x contendrá 0.

    Finalmente el programa debe mostrar en la pantalla el resultado de la elección.