Categoría: Solución 3ra Evaluación

  • s3Eva_IT2015_T1 Maquina con monedas

    Ejercicios: 3Eva_IT2015_T1 Maquina con monedas

    Video de concepto que incluye el ejercicio:

    Algoritmo en Python

    Literal a:

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2015_T1 Maquina con monedas
    import numpy as np
    
    # INGRESO
    valor = float(input('valor: '))
    
    # PROCEDIMIENTO
    centavos = (valor - int(valor))*100
    centavos = int(centavos)
    
    cantidad    = np.zeros(4,dtype=int)
    cantidad[0] = centavos
    numero = int(valor)
    
    i = 1
    while not(numero == 0 or i>=4):
        digito = numero%10
        numero = numero//10
        cantidad[i] = digito
        i = i + 1
    
    # SALIDA
    print(cantidad)
    

    prueba:

    valor: 435.16
    [16  5  3  4]
    >>> 
    

    tarea: convertir a función

    literal b:

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2015_T1 Maquina con monedas
    import numpy as np
    
    # INGRESO
    centavos = int(input('devolver: '))
    
    # PROCEDIMIENTO
    monedas = np.array([1,5,10,25,50])
    tamano = len(monedas)
    devolver = centavos
    cantidad = np.zeros(tamano, dtype = int)
    i = tamano - 1
    while not(i < 0):
        cantidad[i] = devolver//monedas[i]
        devolver = devolver%monedas[i]
        i = i-1
    
    # SALIDA
    print(monedas)
    print(cantidad)
    

    prueba:

    devolver: 63
    [ 1  5 10 25 50]
    [3 0 1 0 1]
    >>> 
    

    tarea: convertir a función

  • s3Eva_IT2015_T4 Bomberos para incendios forestales

    Ejercicios: 3Eva_IT2015_T4 Bomberos para incendios forestales

    Propuesta de solución en Python:

    Algoritmo en Python

    Tarea: Desarrollar la opción 3

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2015_T4 Bomberos para incendios forestales
    import numpy as np
    
    def grupobombero(registrados, m, local):
        n = len(registrados)
        filas = n//m
        if (n%m>0):
            filas = filas+1
        tabla = np.zeros(shape=(filas,m),dtype = int)
        # Solo bomberos de provincia local
        f = 0
        c = 0
        i = 0
        while not(i>=n):
            cual = registrados[i,1]
            quien = registrados[i,0]
            if (cual == local):
                tabla[f,c] = quien
                c = c+1
                if (c>=m):
                    c = 0
                    f = f + 1
            i = i + 1
        # los demas bomberos
        i = 0
        while not(i>=n):
            cual = registrados[i,1]
            quien = registrados[i,0]
            if not(cual == local):
                tabla[f,c] = quien
                c = c + 1
                if (c>=m):
                    c = 0
                    f = f + 1
            i = i + 1
        tabla = np.array(tabla)
        return(tabla)
    
    # 3ra Evaluación I Término 2015
    # Tema 4. Bomberos para incendios forestales
    presentados = []
    tabla  = np.zeros(shape=(1,2),dtype=int)
    opcion = -1
    i = 1
    while not(opcion==6):
        print('1. Registrar bombero')
        print('2. Asignar grupos')
        print('3. Mostrar nombres de un grupo')
        print('4. Guardar datos')
        print('5. Leer datos')
        print('6. Salir')
        opcion = int(input(' opcion: '))
    
        if (opcion ==1):
            i = len(presentados) + 1
            print('voluntario: ',i)
            
            ced  = input('cedula: ')
            nom  = input('nombre: ')
            nbom = int(input('numero bombero: '))
            prv  = int(input('provincia: '))
            while not(prv>=1 and prv<=24):
                prv = int(input('provincia [1,24]: '))
                
            unbombero = {'cedula':ced,
                         'nombre': nom,
                         'nbombero':nbom,
                         'provincia':prv}
            presentados.append(unbombero)
    
        if (opcion==2):
            print('asigna grupos.....')
            m = int(input('cuantos grupos/incendios: '))
            local = int(input('ayudar a provincia: '))
            n = len(presentados)
            registrados =[]
            i = 0
            while not(i>=n):
                nbom = presentados[i]['nbombero']
                prv = presentados[i]['provincia']
                registrados.append([nbom,prv])
                i = i + 1
            tabla = grupobombero(registrados, m, local)
            print(tabla)
            
        if (opcion==3):
            print('....3. Mostrar nombres de un grupo')
            # Tarea por desarrollar
                
        if (opcion==4):
            narchivo = 'bomberos.txt'
            archivo = open(narchivo,'w')
            n = len(presentados)
            j =0
            while not(j>=n):
                ced = presentados[j]['cedula']
                nom = presentados[j]['nombre']
                nbom = presentados[j]['nbombero']
                prv = presentados[j]['provincia']
                linea = ced + ',' +nom + ',' + str(nbom) + ',' +str(prv) +'\n'
                archivo.write(linea)
                j = j+1
            archivo.close()
            print('.... registros guardados: ', n)
            
        if (opcion == 5):
            presentados = []
            narchivo = 'bomberos.txt'
            
            archivo = open(narchivo,'r')
            linea = archivo.readline()
            while not(linea==''):
                linea  = linea.strip('\n')
                partes = linea.split(',')
                ced  = partes[0]
                nom  = partes[1]
                nbom = int(partes[2])
                prv  = int(partes[3])
                
                unbombero = {'cedula':ced,
                             'nombre': nom,
                             'nbombero':nbom,
                             'provincia':prv}
                presentados.append(unbombero)
                linea = archivo.readline()
    
            n = len(presentados)
            print('.... registros leidos: ', n)
            archivo.close()
    
        if (opcion==6):
            print(' Saliendo del programa ....')
            print(' ccpg1001 Fundamentos de computación .....')
    
  • s3Eva_IT2014_T3 Juego Poli-Mancala

    Ejercicios: 3Eva_IT2014_T3 Juego Poli-Mancala

    Propuesta de solución en Python:

    El tema pide realizar el programa usando la función siembra del tema 4. Por lo que la función se califica aparte.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2014_T3 Juego Poli-Mancala
    import numpy as np
    
    # funcion siembra del tema 4
    def siembra(mancala,jugador,casilla):
        tamano = np.shape(mancala)
        m = tamano[1]
        fila = jugador
        # Selecciona el movimiento del contador
        if (fila == 0):
            mueve = 1
        else:
            mueve = -1
    
        # Recoge las fichas
        fichas = mancala[fila,casilla]
        mancala[fila,casilla] = 0
        
        # inicia la siembra
        while not(fichas==0):
            casilla = casilla + mueve
            if (casilla>=m):
                casilla = m-1
                fila = 1
                mueve = -1 
            if (casilla<0):
                casilla = 0
                fila = 0
                mueve = 1
            mancala[fila,casilla] = mancala[fila,casilla]+1
            fichas = fichas-1
    
        return(mancala)
    
    # PROGRAMA PARA EL JUEGO ---------------
    # inicializa tablero
    mancala = np.ones(shape=(2,8),dtype=int)
    mancala = mancala*4
    mancala[:,0] = 0
    mancala[:,7] = 0
    casa1 = 0
    casa2 = 0
    print('  1 2 3 4 5 6 7 8')
    print(mancala)
    
    while not(casa1>24 or casa2>24):
        
        jugador = 1
        print(' Juega 1')
        casilla = input('¿Cual casilla?:')
        while not(casilla>'1' and casilla<'8'):
            casilla = input('¿Cual casilla?:')
        mancala = siembra(mancala,jugador-1, int(casilla)-1)
        print('  1 2 3 4 5 6 7 8')
        print(mancala)
    
        jugador = 2
        print(' Juega 2')
        casilla = input('¿Cual casilla?:')
        while not(casilla>'1' and casilla<'8'):
            casilla = input('¿Cual casilla?:')
        mancala = siembra(mancala,jugador-1, int(casilla)-1)
        casa1 = mancala[0,0]+mancala[1,0]
        casa2 = mancala[0,7]+mancala[1,7]
        print('  1 2 3 4 5 6 7 8')
        print(mancala)
    
    # Muestra ganadores
    if (casa1>casa2):
        print(' Gana Jugador 1')
    else:
        print(' Gana Jugador 2')
    
  • s3Eva_IT2014_T4 Función siembra

    Ejercicios: 3Eva_IT2014_T4 Función siembra

    Algoritmo en Python

    complementa el programa requerido en tema 3

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IT2014_T4 Juego Poli-Mancala
    import numpy as np
    
    # funcion siembra
    def siembra(mancala,jugador,casilla):
        tamano = np.shape(mancala)
        m = tamano[1]
        fila = jugador
        # Selecciona el movimiento del contador
        if (fila == 0):
            mueve = 1
        else:
            mueve = -1
    
        # Recoge las fichas
        fichas = mancala[fila,casilla]
        mancala[fila,casilla] = 0
        
        # inicia la siembra
        while not(fichas==0):
            casilla = casilla + mueve
            if (casilla>=m):
                casilla = m-1
                fila = 1
                mueve = -1 
            if (casilla<0):
                casilla = 0
                fila = 0
                mueve = 1
            mancala[fila,casilla] = mancala[fila,casilla]+1
            fichas = fichas-1
    
        return(mancala)
    
  • s3Eva_IIT2012_T1 Alfabeto radiofónico con Python

    Ejercicio: 3Eva_IIT2012_T1 Alfabeto radiofónico

    Para resolver el ejercicio de alfabeto radiofónico en Python, se propone usar el algoritmo de búsqueda sobre una lista con las parejas [letras,código].

    radiofonico = [['A','Alfa'],   ['B','Bravo'],
                   ['C','Charlie'],['D','Delta'],
                   ['E','Echo'],   ['F','Foxtrot'],
                   ['G','Golf'],   ['H','Hotel'],
                   ['I','India'],  ['J','Juliet'],
                   ['K','Kilo'],   ['L','Lima'],
                   ['M','Mike'],   ['N','November'],
                   ['O','Oscar'],  ['P','Papa'],
                   ['Q','Quebec'], ['R','Romeo'],
                   ['S','Sierra'], ['T','Tango'],
                   ['U','Uniform'],['V','Victor'],
                   ['W','Whiskey'],['X','X-ray'],
                   ['Y','Yankee'], ['Z','Zulu']]
    
    

    Instrucciones en  Python

    Para la función coderadio(), la palabra ingresada se convierten todas sus letras a mayúsculas con .upper(), así se facilita la búsqueda sobre la lista radiofónico.

    >>> coderadio('ESPOL')
    Echo Sierra Papa Oscar Lima

    Se aplica el algoritmo de búsqueda  usando cada letra de la palabra sobre cada pareja de lista radiofónico, usando la bandera encontre para salir del bucle de búsqueda. La variable donde indica la posición de coincidencia entre la letra de la palabra y la letra de la lista radiofónico.

    El proceso contrario con la función decoradio(), se toma la primera letra de cada palabra de la frase ingresada.

    >>> decoradio('Echo Sierra Papa Oscar Lima')
    ESPOL

    el detalle de instrucciones se presenta a continuación.

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 3Eva_IIT2012_T1 Alfabeto radiofónico
    # Tarea: En la segunda función considerar
    # que se pueden dar palabras que no son radiofónicas.
    #      mejorar la función usando la tabla radiofónico.
    
    def coderadio(palabra,radiofonico):
        # analizar secuencia a codificar
        palabra = palabra.upper()
        frase = '' 
    
        n = len(palabra)
        i = 0
        while not(i>=n):
            letra = palabra[i]
            
            # Buscar letra en radiofonico
            encontre = 0
            donde    = -1
            m = len(radiofonico)
    
            j = 0
            while not(j>=m or encontre==1):
                if (letra == radiofonico[j][0]):
                    encontre = 1
                    donde = j
                    equivale = radiofonico[j][1]
                j = j + 1 # busca la siguiente fila
    
            # completa la frase
            if len(frase)==0:
                espacio = ''
            else:
                espacio = ' '
            frase = frase + espacio + equivale
            
            i = i + 1 # cambia letra de palabra
    
        return(frase)
    
    def decoradio(frase,radiofonico):
        # Solo un ejemplo para decodificar,
        # Tarea, considerar que pueden enviar 
        #   una palabra que no se encuentra en tabla
    
        partes = frase.split(' ')
        n = len(partes)
        palabra = ''
    
        i = 0
        while not(i>=n):
            palabra = palabra + partes[i][0]
            i = i + 1
        return(palabra)
    

    Tarea: Continuar con el tema 2 para crear el menú con las partes para practicar el alfabeto radiofónico.

  • s3Eva_IT2012_T3 Tonalidad de colores en GIF

    Ejercicio: 3Eva_IT2012_T3 Tonalidad de colores en GIF

    resultados obtenidos

    color, frecuencia
    0 5
    1 0
    2 0
    ...
    28 0
    29 0
    30 10
    31 0
    32 0
    ...
    78 0
    79 0
    80 5
    81 0
    ...
    

    Algoritmo en Python

    # 3Eva_IT2012_T3 Tonalidad de colores en GIF
    import numpy as np
    
    # INGRESO
    matriz = np.array([[30, 30, 30, 0, 0],
                       [30, 30, 30, 0, 0],
                       [170, 170, 30, 30, 0],
                       [80, 80, 170, 30, 30],
                       [80, 80, 80, 170, 170]])
    
    # PROCEDIMIENTO
    color = np.arange(0,256,1)
    frecuencia = np.zeros(256,dtype=int)
    tamano = np.shape(matriz)
    n = tamano[0]
    m = tamano[1]
    for i in range(0,n,1):
        for j in range(0,m,1):
            unvalor = matriz[i,j]
            frecuencia[unvalor] = frecuencia[unvalor] + 1
    
    # SALIDA
    print('color, frecuencia')
    for i in range(0,256,1):
        print(color[i],frecuencia[i])
    
  • s3Eva_IT2012_T2 Validar infix y convertir a prefix

    Ejercicio: 3Eva_IT2012_T2 Validar infix y convertir a prefix

    resultados obtenidos,

    >>> in2prefix('2+3')
    '+ 2 3'
    >>> validainfix('2+3')
    True
    >>> validainfix('23+')
    False
    >>> in2prefix('2+3')
    '+ 2 3'
    >>> 
    

    Algoritmo en Python

    # 3Eva_IT2012_T2 Validar infix y convertir a prefix
    
    def validainfix(cadena):
        numero ='0123456789'
        operador ='+-'
        c1 = cadena[0] in numero
        c2 = cadena[2] in numero
        c3 = cadena[1] in operador
    
        z = 'use 3 dígitos'
        if len(cadena)==3:
            z = c1 and c2 and c3
        return(z)
    
    def in2prefix(cadena):
        z = 'use 3 dígitos'
        condicion = validainfix(cadena)
        if len(cadena)==3 and condicion:
            z = cadena[1]
            z = z+' '+cadena[0]
            z = z+' '+cadena[2]
        return(z)
    
  • s3Eva_IIT2011_T2 Registrar gastos en viaje por automóvil

    Ejercicio: 3Eva_IIT2011_T2 Registrar gastos en viaje por automóvil

    Algoritmo en Python

    # 3ra Evaluacion II Term 2011
    # Tema 2. Recorridos Juan y Pedro
    import random as rnd
    
    # INGRESO
    n = int(input('Ingrese cantidad de ciudades: '))
    gasto = [0]
    izquierda = [0]
    derecha = [0]
    for i in range(1,n+1,1):
        print("Ciudad: ", i)
        ungasto = int(input('Gastos en ciudad: '))
        ciudad_izq = int(input('Ciudad izquierda: '))
        ciudad_der = int(input('Ciudad  derecha: '))
        gasto.append(ungasto)
        izquierda.append(ciudad_izq)
        derecha.append(ciudad_der)
    
    # PROCEDIMIENTO
    # Viaje de Juan
    dia    = 1
    visita = 1
    costojuan = 0
    rutajuan  = []
    while not(visita==0):
        rutajuan.append(visita)
        costojuan = costojuan + gasto[visita]
        direccion = int(rnd.random()*2)+1
        if direccion == 1:
            visita = izquierda[visita]
        else:
            visita = derecha[visita]
        dia = dia+1
    diasjuan = dia-1
    
    
    # Viaje de Pedro
    dia    = 1
    visita = 1
    costopedro = 0
    rutapedro  = []
    while not(visita==0):
        rutapedro.append(visita)
        costopedro = costopedro + gasto[visita]
        direccion  = int(rnd.random()*2)+1
        if direccion == 1:
            visita = izquierda[visita]
        else:
            visita = derecha[visita]
        dia = dia+1
    diaspedro = dia-1
    
    # SALIDA
    print('Recorrido de Juan: ', rutajuan)
    print('Costo de Juan: ', costojuan)
    print('Recorrido de Pedro: ', rutapedro)
    print('Costo de Pedro: ', costopedro)
    
    if diasjuan>diaspedro:
        print('Juan visitó más ciudades')
    else:
        print('Pedro visitó más ciudades')
    
    if costojuan<costopedro:
        print('Juan tuvo el viaje más barato')
    else:
        print('Pedro tuvo el viaje más barato')
    

    Resultado del algoritmo

    RESTART: D:/CCPG1001Ejemplos/RutasJuanPedro.py 
    Ingrese cantidad de ciudades: 7
    Ciudad:  1
    Gastos en ciudad: 200
    Ciudad izquierda: 3
    Ciudad  derecha: 2
    Ciudad:  2
    Gastos en ciudad: 150
    Ciudad izquierda: 4
    Ciudad  derecha: 5
    Ciudad:  3
    Gastos en ciudad: 70
    Ciudad izquierda: 7
    Ciudad  derecha: 4
    Ciudad:  4
    Gastos en ciudad: 140
    Ciudad izquierda: 7
    Ciudad  derecha: 6
    Ciudad:  5
    Gastos en ciudad: 90
    Ciudad izquierda: 6
    Ciudad  derecha: 0
    Ciudad:  6
    Gastos en ciudad: 300
    Ciudad izquierda: 7
    Ciudad  derecha: 0
    Ciudad:  7
    Gastos en ciudad: 50
    Ciudad izquierda: 0
    Ciudad  derecha: 0
    Recorrido de Juan:  [1, 2, 4, 6]
    Costo de Juan:  790
    Recorrido de Pedro:  [1, 3, 7]
    Costo de Pedro:  320
    Juan visitó más ciudades
    Pedro tuvo el viaje más barato
    >>> 
    
  • s3Eva_IIT2011_T1 Generar números 1800-nombre

    Ejercicio: 3Eva_IIT2011_T1 Generar números 1800-nombre

    resultados obtenidos

    >>> teclaletra('K')
    5
    

    Algoritmo en Python

    # 3Eva_IIT2011_T1 Generar números 1800-nombre
    
    def teclaletra(letra):
        letras = ['ABC','DEF','GHI',
                  'JKL','MNO','PQRS',
                  'TUV','WXYZ']
        tecla = [2,3,4,5,6,7,8,9]
        n = len(letras)
        equivale = 0
        for i in range(0,n,1):
            if letra in letras[i]:
                equivale = tecla[i]
        return(equivale)
        
    # Tarea, desarrollar literal b
    
  • s3Eva_IT2011_T2 producto de matrices

    Ejercicio: 3Eva_IT2011_T2 producto de matrices

    resultado obtenido:

    producto es:
    [[ 50.  50. 200. 450.]
     [ 75.  50.   0. 300.]
     [ 50. 100. 100. 150.]]
    >>> 
    

    Algoritmo en Python

    # 3Eva_IT2011_T2 producto de matrices
    import numpy as np
    
    # INGRESO
    A = [[2,1,2,3],
         [3,1,0,2],
         [2,2,1,1]]
    B = [25,50,100,150]
    
    # PROCEDIMIENTO
    # usa arreglos en lugar de listas
    A = np.array(A)
    B = np.array(B)
    
    tamano = np.shape(A)
    n = tamano[0]
    m = tamano[1]
    k = len(B)
    
    # verificar que m=k
    
    C = np.zeros(shape=(n,m))
    for i in range(0,n,1):
        for j in range(0,m,1):
            C[i,j] = A[i,j]*B[j]     
    
    # SALIDA
    print('producto es:')
    print(C)