Autor: Edison Del Rosario

  • s2Eva_IIT2007_T2 Juego de memotest

    Ejercicio: 2Eva_IIT2007_T2 Juego de memotest

    Video Tutorial:

    Algoritmo en Python

    # 2Eva_IIT2007_T2 Juego de memotest
    # propuesta: edelros@espol.edu.ec
    import numpy as np
    import random as rnd
    
    def tableroparejas(n):
        fichasunicas = (n*n)//2
        tablero = np.zeros(shape=(n,n),dtype =int)
    
        i = 1
        while i<=fichasunicas:
            f1 = int(rnd.random()*n)+0
            c1 = int(rnd.random()*n)+0
            while not(tablero[f1,c1]==0):
                f1 = int(rnd.random()*n)+0
                c1 = int(rnd.random()*n)+0
            tablero[f1,c1] = i
            f2 = int(rnd.random()*n)+0
            c2 = int(rnd.random()*n)+0
            while not(tablero[f2,c2]==0):
                f2 = int(rnd.random()*n)+0
                c2 = int(rnd.random()*n)+0
            tablero[f2,c2] = i
            i = i + 1
        return(tablero)
    
    # PROGRAMA
    # INGRESO
    n = 4
    
    # PROCEDIMIENTO
    tablero = tableroparejas(n)
    descubiertas = np.zeros(shape=(n,n),dtype=int)
    equivocado = 0
    encontrado = 0
    while (equivocado<3 and encontrado<(n*n)):
        
        print('estado del juego:')
        print(descubiertas)
    
        f1 = int(input('fila ficha1:'))
        c1 = int(input('columna ficha1:'))
        while not(descubiertas[f1,c1]==0):
            f1 = int(input('fila ficha1:'))
            c1 = int(input('columna ficha1:'))
    
        f2 = int(input('fila ficha2:'))
        c2 = int(input('columna ficha2:'))
        while not(descubiertas[f2,c2]==0):
            f2 = int(input('fila ficha2:'))
            c2 = int(input('columna ficha2:'))
    
        ficha1 = tablero[f1,c1]
        ficha2 = tablero[f2,c2]
    
        if ficha1==ficha2:
            descubiertas[f1,c1] = ficha1
            descubiertas[f2,c2] = ficha2
            encontrado = encontrado + 2
            print('ENCONTRO una pareja..!',ficha1,ficha2)
        else:
            equivocado = equivocado + 1
            print('Las fichas son diferentes: ',ficha1,ficha2)
    
    # SALIDA
    print('Solucion del tablero:')
    print(tablero)
    print('Estado del juego:')
    print(descubiertas)
    if encontrado==(n*n):
        print(' Muy bien..!! todas las fichas encontradas')
    else:
        print('Perdió... se equivoco el máximo de veces...')
        print('fichas descubiertas:', encontrado)
    

    Tarea: Revisar que las coordenadas ingresadas por el jugador se encuentren dentro del tablero.

    Resultado del Algoritmo

    estado del juego:
    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
    fila ficha1:0
    columna ficha1:0
    fila ficha2:1
    columna ficha2:1
    Las fichas son diferentes:  4 1
    estado del juego:
    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
    fila ficha1:0
    columna ficha1:0
    fila ficha2:2
    columna ficha2:2
    Las fichas son diferentes:  4 6
    estado del juego:
    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
    fila ficha1:0
    columna ficha1:0
    fila ficha2:3
    columna ficha2:3
    Las fichas son diferentes:  4 2
    Solucion del tablero:
    [[4 8 3 4]
     [3 1 1 5]
     [6 7 6 7]
     [5 2 8 2]]
    Estado del juego:
    [[0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]
     [0 0 0 0]]
    Perdió... se equivoco el máximo de veces...
    fichas descubiertas: 0
    >>> 
    

    Algoritmo realizado en diagrama de flujo, Archivo matlab en pdf

     

    ejercicios resueltos Matlab 2eva_iit2007_t2 pdf

  • 2Eva_IIT2007_T1 Palabras aleatorias alternando vocal y consonante, genword

    2da Evaluación II Término 2007-2008. Febrero 12, 2008 /ICM00794

    Tema 1. (25 puntos) Elabore una función GenWord para generar palabras conformadas de n letras escogidas de forma aleatoria, que pueden ser válidas o no en el idioma español.

    Para realizar la función se sugiere conformar una palabra de n letras, empezando con vocal o consonante y luego alternando entre vocal y consonante. Las letras se escogerán entre un arreglo de vocales y un arreglo de consonantes.

    Elabore un programa que permita:

    a) Leer y validar la cantidad de m palabras a generar.
    b) Para cada palabra generada, llamando previamente a la función GenWord, pedir al usuario si la palabra es válida o no.
    c) Mostrar el total de palabras válidas encontradas.

    Ingrese la cantidad de palabras: 4
    Palabra generada: VELA
    Desea aceptarla (1: Si, 0: No): 1
    Palabra generada: IBUX
    Desea aceptarla (1: Si, 0: No): 0
    Palabra generada: ADAN
    Desea aceptarla (1: Si, 0: No): 1
    Palabra generada: CARO
    Desea aceptarla (1: Si, 0: No): 1
    total de palabras válidas: 3

    Referencia: Mono infinito. https://es.wikipedia.org/wiki/Teorema_del_mono_infinito

  • 2Eva_IT2007_T4 Registrarse en curso fundamentos

    2da Evaluación I Término 2007-2008. Agosto 28, 2007 /ICM00794

    Tema 4. (30 puntos) Programe una aplicación para el registro de estudiantes en la materia Fundamentos de Computación, considere que se han abierto 5 paralelos con un cupo de 40 estudiantes. Se debe ofrecer el siguiente menú de opciones:

    Fundamentos de Computación
     1) Registrar
     2) Consultar
     3) Anular
     4) Salir
    • En la opción 1), el estudiante ingresa su matrícula. El programa le indica en qué paralelos hay cupo disponible. El estudiante elige el paralelo. El programa registra su código en ese paralelo.
    • En la opción 2), el estudiante ingresa su matrícula. El programa le indica en qué paralelo está registrado.
    • En la opción 3), el estudiante ingresa su matrícula y el paralelo en el cual está registrado. El programa elimina este estudiante del paralelo.
    • Al escoger la opción 4), se termina la ejecución del programa.

    Cada opción puede manejarse separadamente con funciones o en el mismo programa. Para almacenar los datos se debe usar un arreglo de estructuras.

  • 2Eva_IT2007_T3 Simular carrera de perros

    2da Evaluación I Término 2007-2008. Agosto 28, 2007 /ICM00794

    Tema 3. (30 puntos) Diez perros se encuentran participando en una carrera, el recorrido que deben realizar es de un total de 100 metros con obstáculos, bajo las siguientes reglas: carreraperros

    • Todos avanzan al mismo tiempo.
    • Cada perro realiza aleatoriamente una de las 4 acciones siguientes:
      • salta 1 metro, o derribando o sorteando apropiadamente el obstáculo,
      • salta 2 metros, o derribando o sorteando apropiadamente el obstáculo.
    • Cuando el perro derriba un obstáculo, usted debe considerar que no puede avanzar en el siguiente instante de tiempo, porque tiene que recuperarse para el siguiente salto.

    Elabore un programa que simule el recorrido de los perros y muestre:

    a) El avance de los perros en la carrera, en cada instante de tiempo, hasta que terminó.
    b) El perro que ganó la carrera y la cantidad de saltos que necesitó para lograrlo (suponga que fue un solo perro).

     

  • 2Eva_IT2007_T2 Verificar matriz triangular con Python

    2da Evaluación I Término 2007-2008. Agosto 28, 2007 /ICM00794

    Tema 2. (20 puntos) Escriba la función verifica(matriz) que reciba una matriz cuadrada y retorne:

    • 1 si es una matriz triangular inferior (todos los elementos sobre la diagonal principal son iguales a cero),
    • 2 si es una matriz triangular superior (todos los elementos debajo de la diagonal principal son iguales a cero),
    • 3 si es una matriz diagonal (todos los elementos sobre y debajo de la diagonal principal son iguales a cero).
    Diagonal
    1 0 0 0
    0 1 0 0
    0 0 1 0
    0 0 0 1

    Ejemplo de algoritmo en Python

    import numpy as np
    A = np.array([[ 1, 0, 0 ],
                  [ 0, 1, 0 ],
                  [ 0, 0, 1 ]])
    
    >>> verifica(A)
    >>> 3
    
    B = np.array([[ 5., 4. , 3. ],
                  [ 0., 3.4, 6.8],
                  [ 0., 0. , 5. ]])
    >>> verifica(B)
    >>> 2
    
    C = np.array([[1, 0, 0],
                  [2, 1, 0],
                  [1, 1, 1]])
    >>> verifica(C)
    >>> 1

    Referencia: Método de Gauss con Python

  • 2Eva_IT2007_T1 Funciones par e impar recursivas

    2da Evaluación I Término 2007-2008. Agosto 28, 2007 /ICM00794

    Tema 1. (20 puntos) Sean las funciones recursivas:

    par(n) = \begin{cases} 1, & n=0\\impar(n-1), & n>0 \end{cases} impar(n) = \begin{cases} 0, & n=0\\par(n-1), & n>0 \end{cases}
    Ejemplos: 
     >> par (4) retorna 1
     >> impar (4) retorna 0
     >> par (5) retorna 0
     >>impar (5) retorna 1

    a) Escriba las funciones par e impar, dichas funciones retornan 1 si el número tiene la característica de la función llamada.

    b) Escriba un programa principal donde se generen de forma aleatoria n números enteros comprendidos entre 10 y 50. Luego, utilizando las funciones anteriores, determine si la mayoría de los números generados fueron pares. El número n debe ser pedido al usuario.

  • s2Eva_IT2007_T1 Funciones par e impar recursivas

    Ejercicio: 2Eva_IT2007_T1 Funciones par e impar recursivas

    Propuesta de solución en Python: py_pdf, también en versión matplab: m_pdf

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IT2007_T1 Funciones par e impar
    # Propuesta: edelros@espol.edu.ec
    
    import random as rnd
    
    def impar(n):
        if (n==0):
            z = 0
        if (n>0):
            z = par(n-1)
        return (z)
    
    def par(n):
        if (n==0):
            z = 1
        if (n>0):
            z = impar(n-1)
        return (z)
    
    
    # PROGRAMA Par/Impar Recursiva
    
    # INGRESO
    n = int(input('cuantos números?: '))
    
    # PROCEDIMIENTO
    c = 0
    i = 1
    while not(i>n):
        a = int(rnd.random()*41)+10
        r = par(a)
        if (r==1):
            c = c + 1
        i = i + 1
    if c>(n/2):
        z = 1
    else:
        z = 0
    
    # salida
    print(' El resultado de mayoría pares es: ')
    print(z)
    

    resultado del algoritmo

    cuantos números?: 100
     El resultado de mayoría pares es: 
    1
    >>> 
    cuantos números?: 100
     El resultado de mayoría pares es: 
    0
    >>> 
    

    ejercicios resueltos Python 2eva_it2007_t1 pdf

    ejercicios resueltos Matlab 2eva_it2007_t1 pdf

  • s3Eva_IIT2013_T4 Gestionar asientos en cine

    Ejercicio: 3Eva_IIT2013_T4 Gestionar asientos en cine

    Algoritmo en Python

    Propuesta de solución en Python:

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2013_T4 Gestionar asientos en cine
    import numpy as np
    
    # Genera la sala
    n = int(input('numero filas: '))
    m = int(input('numero columnas:'))
    asiento = np.zeros(shape=(n,m), dtype=int)
    
    opcion = '0'
    while not(opcion=='5'):
        print(' 1. Vender Boletos')
        print(' 2._Mostrar_asientos')
        print(' 3. Contar vendidos')
        print(' 4. Buscar libre')
        print(' 5. Salir ')
    
        opcion = input('cual opcion: ')
    
        if (opcion=='1'):
            print('Vender Boletos')
            fila = int(input('fila:'))
            columna = int(input('columna:'))
            if (asiento[fila,columna]==0):
                asiento[fila,columna] = 1
            else:
                print('asiento ocupado')
    
            
        if (opcion=='2'):
            print('Mostrar_asientos')
            print(asiento)
            
        if (opcion=='3'):
            print('Contar vendidos')
            contar = 0
            for fila in range(0,n,1):
                for columna in range(0,m,1):
                    contar = contar+asiento[fila,columna]
            print(contar)
            
        if (opcion=='4'):
            print('Buscar libre')
            
        if (opcion=='5'):
            print('Salir')
    
  • s3Eva_IT2013_T3 Menú de consejerías académicas

    Ejercicios: 3Eva_IT2013_T3 Menú de consejerías académicas

    Propuesta de solución en Python,  ejercicio iniciado en clase como referencia. Se incluyó grabar los datos en un archivo.

    Tarea: continúa ejercicio en la siguiente clase, para las opciones no desarrolladas y la función del tema 2

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2013_T3 Menú de consejerías académicas
    
    estudiante = []
    opcion = '0'
    while not(opcion=='7'):
        print('1. Ingresar datos de estudiante')
        print('2. Ingresar datos de consejero')
        print('3. Sorteo de consejeros/estudiantes')
        print('4. Mostrar lista de estudiantes por consejero')
        print('5. Mostrar consejero de un estudiante')
        print('6. Grabar datos')
        print('7. Salir')
    
        opcion = input('cual opcion: ')
    
        if (opcion=='1'):
            # INGRESO
            mtr = input('matricula: ')
            nom = input('nombre: ')
            ema = input('email: ')
            nac = int(input('año nacimiento: '))
            while not(nac>1900 and nac<2018):
                print('usar anos desde el ultimo siglo...')
                nac = int(input('año nacimiento: '))
    
            unestudiante = {'matricula':mtr,
                            'nombre':nom,
                            'email':ema,
                            'nacimiento':nac}
            estudiante.append(unestudiante)
    
        if (opcion=='4'):
            print('los estudiantes registrados son: ')
            print(estudiante)
    
        if (opcion=='6'):
            print('Guardar datos en archivo...')
            narchivo = 'misdatos.txt'
    
            archivo  = open(narchivo, 'w')
            n = len(estudiante)
    
            i = 0
            while not(i>=n):
                nom = estudiante[i]['nombre']
                ema = estudiante[i]['email']
                linea = nom +','+ema+ '\n' # str(nac)
                archivo.write(linea)
                i = i + 1
    
            archivo.close()
    
  • s3Eva_IT2013_T2 sorteo de consejeros para estudiantes

    Ejercicio: 3Eva_IT2013_T2 sorteo de consejeros para estudiantes

    Instrucciones en Python

    Propuesta de solución en Python,  ejercicio iniciado en clase como referencia.

    Algoritmo en Python

    # 3Eva_IT2013_T2 sorteo de consejeros para estudiantes
    import numpy as np
    import random as rnd
    
    # INGRESO
    n = int(input('numero de estudiantes: '))
    m = int(input('numero de profesores: '))
    
    # PROCEDIMIENTO
    consejero = np.zeros(n+1,dtype = int)
    contador = np.zeros(m+1,dtype = int)
    cupo = n//m
    residuo = n%m
    i = 1
    while not(i>(n-residuo)):
        sorteo = int(rnd.random()*m) + 1
        if (contador[sorteo]<cupo):
            contador[sorteo] = contador[sorteo]+1
            consejero[i] = sorteo
            i = i + 1
    cupo = cupo + 1
    i = n - residuo + 1
    while not(i>n):
        sorteo = int(rnd.random()*m) + 1
        if (contador[sorteo]<cupo):
            contador[sorteo] = contador[sorteo]+1
            consejero[i] = sorteo
            i = i + 1
    
    # SALIDA
    print(contador)
    print(consejero)