s2Eva_IIT2007_T2 Juego de memotest

Ejercicio: 2Eva_IIT2007_T2 Juego de memotest

Video Tutorial:

Instrucciones 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

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

# 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

s2Eva_IT2006_T3 Encriptar a Morse

Ejercicio: 2Eva_IT2006_T3 Encriptar a Morse

# 2Eva_IT2006_T3 Encriptar a Morse

def morse_numero(numero):
    equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                 '-..' , '-.-.' , '…-' , '–.-' , '-.' ]

    # separa los digitos
    digitos = []
    while numero>0:
        residuo = numero%10
        cociente = numero//10
        digitos.append(residuo)
        numero = cociente
        
    # equivalente en morse
    m = len(digitos)
    cadena = ""
    j = 0
    while (j<m):
        espacio = ' '
        if j == 0:
            espacio = ''
        cadena = equivale[digitos[j]] + espacio + cadena
        j=j+1
    return (cadena)

def numero_morse(cadena):
    equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                 '-..' , '-.-.' , '…-' , '–.-' , '-.' ]
    # separa cadena
    partes = cadena.split(' ')
    # construye numero
    numero = 0
    m = len(partes)
    for i in range(0,m,1):
        digito = equivale.index(partes[i])
        numero = numero*10+digito
    
    return(numero)

# Tarea, realizar el menú requerido.

resultado del algoritmo

>>> morse_numero(12)
('..-. ..-',)
>>> numero_morse('..-. ..-')
12
>>> 

s2Eva_IT2006_T2 Simula juego de ruleta, punto y premio

Ejercicio: 2Eva_IT2006_T2 Simula juego de ruleta, punto y premio

resultados del algoritmo

>>> puntoganado(5)
8
>>> 
>>> puntoganado(5)
7
>>> 
>>> puntoganado(5)
9
>>> 
>>> premio(8)
'pluma'
>>> premio(18)
'camiseta'
>>> premio(28)
'camiseta'
>>> premio(78)
'ninguno'
>>> premio(3)
'ninguno'
>>> 

Instrucciones en Python

# 2Eva_IT2006_T2 Juego ruleta, punto y premio
import random as rnd

def puntoganado(escoge):
    ruleta = [2,7,5,9,1,3,8,4]
    m = len(ruleta)
    giro = int(rnd.random()*m)+0
    parada = escoge + giro
    if parada>=m:
        parada = parada-m
    puntos = ruleta[parada]
    return(puntos)

def premio(acumulado):
    producto = 'ninguno'
    if (acumulado>=5 and acumulado<=15):
        producto = 'pluma'
    if (acumulado>=16 and acumulado<=35):
        producto = 'camiseta'
    if (acumulado>=36 and acumulado<=45):
        producto = 'balon del mundial'
    return(producto)

# tarea # programa de prueba

s2Eva_IT2006_T1 Donaciones defensa civil

Ejercicio: 2Eva_IT2006_T1 Donaciones defensa civil

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2006_T1 Donaciones defensa civil
# Propuesta: edelros@espol.edu.ec
# Nombre Donante, teléfono, Tipo Donación, Cantidad

donacion = []
opcion = 0
while not(opcion==5):
    
    print('1. Registro de donacion')
    print('2. Donantes por tipo')
    print('3. Unidades por tipo')
    print('4. Guardar archivo')
    print('5. Salir')
    
    opcion = int(input('cual opcion: '))

    if (opcion==1):
        print('REGISTRA DONACION')
        nombre   = input('nombre: ')
        telefono = input('telefono: ')
        print(' tipo: 1.alimentos 2.medicina 3.dinero')
        tipo     = int(input('tipo : '))
        cantidad = float(input('cantidad: '))
        donacion.append([nombre,telefono,
                         tipo,cantidad])

    elif (opcion==2):
        print('DONANTES POR TIPO')
        m = len(donacion)
        qalimento = 0
        qmedicina = 0
        qdinero   = 0
        for i in range(0,m,1):
            if (donacion[i][2]==1):
                qalimento = qalimento + 1
            if (donacion[i][2]==2):
                qmedicina = qmedicina + 1
            if (donacion[i][2]==3):
                qdinero = qdinero + 1
        print('donantes alimento: ' + str(qalimento))
        print('donantes medicina: ' + str(qmedicina))
        print('donantes dinero:   ' + str(qdinero))
            
    elif (opcion==3):
        print('UNIDADES POR TIPO')
        m = len(donacion)
        salimento = 0.0
        smedicina = 0.0
        sdinero   = 0.0
        for i in range(0,m,1):
            if (donacion[i][2]==1):
                salimento = salimento+donacion[i][3]
            if (donacion[i][2]==2):
                smedicina = smedicina+donacion[i][3]
            if (donacion[i][2]==3):
                sdinero = sdinero+donacion[i][3]
        print('cantidad de alimento: '+str(salimento))
        print('cantidad medicina: '+str(smedicina))
        print('cantidad dinero:   '+str(sdinero))
        
    elif (opcion==4):
        print('Guardar')
        nombrearchivo = input('nombre archivo: ')
        archivo = open(nombrearchivo+'.txt','w')
        m = len(donacion)
        for i in range(0,m,1):
            registro = str(donacion[i][0])+','+str(donacion[i][1])
            registro = registro + ',' + str(donacion[i][2])
            registro = registro + ',' + str(donacion[i][3])+'\n'
            archivo.write(registro)
        archivo.close()
        
    elif (opcion==5):
        print('Gracias por usar el software')
    else:
        print('** opcion no existe **')

resultado del algoritmo

1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 1
REGISTRA DONACION
nombre: Juan
telefono: 123
 tipo: 1.alimentos 2.medicina 3.dinero
tipo : 1
cantidad: 30
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 2
DONANTES POR TIPO
donantes alimento: 1
donantes medicina: 0
donantes dinero:   0
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 3
UNIDADES POR TIPO
cantidad de alimento: 30.0
cantidad medicina: 0.0
cantidad dinero:   0.0
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 4
Guardar
nombre archivo: donante
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 5
Gracias por usar el software
>>> 

ejercicios resueltos Python 2eva_it2006_t1 pdf

ejercicios resueltos Matlab 2eva_it2006_t1 pdf

s2Eva_IT2005_T4 Registrar mejores calificaciones

Ejercicio: 2Eva_IT2005_T4 Registrar mejores calificaciones

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

Se propone realizar el ejercicio mediante el uso de menú, separando las actividades, permitiendo luego añadir opciones.

Tarea: validar en el ingreso que las notas sean entre 0 y 100, y encontrar los datos de calificación más alta y más baja

Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2005_T4 Registrar mejores calificaciones
# propuesta: edelros@espol.edu.ec

# Se usará menú y diccionario para cada registro
# Tarea: opcion 4 con nota mas alta y mas baja
# Tarea: aumentar opciones para grabar o leer archivo
# Tarea: Se puede hacer también con listas y sin menu

lista = []
suma = 0

opcion = '0'
while not(opcion=='5'):
    print('1. Ingresar registro')
    print('2. Ingresar ponderaciones')
    print('3. Calcular calificaciones')
    print('4. Mostrar lista y extremos')
    print('5. Salir')
    
    opcion = input('-cual opcion: ')
    
    if (opcion=='1'):
        print('REGISTRO ******')
        nombre   = input('nombre:  ')
        leccion  = int(input('leccion:  '))
        proyecto = int(input('proyecto: '))
        examen   = int(input('examen:   '))
        estudiante = {'nombre':nombre,
                      'leccion':leccion,
                      'proyecto':proyecto,
                      'examen':examen,
                      'calif':0}
        lista.append(estudiante)
        
    elif (opcion=='2'):
        print('PONDERACION')
        pondlecc = int(input('% leccion:  '))
        pondproy = int(input('% proyecto: '))
        pondexam = int(input('% examen:   '))
        suma = pondlecc + pondproy + pondexam
        while not(suma==100):
            print('ponderación no suma 100')
            pondlecc = int(input('% leccion:  '))
            pondproy = int(input('% proyecto: '))
            pondexam = int(input('% examen:   '))
            suma = pondlecc + pondproy + pondexam
        
    elif (opcion=='3'):
        print('CALCULAR')
        tamano = len(lista)
        if (suma==100):
            for i in range(0,tamano,1):
                suma = lista[i]['leccion']*pondlecc
                suma = suma + lista[i]['proyecto']*pondproy
                suma = suma + lista[i]['examen']*pondexam
                prom = suma/100
                lista[i]['calif'] = prom
            print('Recalculadas las notas, proceder a mostrar')
        else:
            print('** las ponderaciones no son validas **')
            print('** volver a opcion de ponderaciones **')
        
    elif (opcion=='4'):
        print('LISTA')
        tamano = len(lista)
        print('nombre, leccion, proyecto, examen, calif')
        for i in range(0,tamano,1):
            texto = lista[i]['nombre'] + ', ' + str(lista[i]['leccion'])
            texto = texto + ', '+str(lista[i]['proyecto'])
            texto = texto + ', ' + str(lista[i]['examen'])
            texto = texto +', '+str(lista[i]['calif']) 
            print(texto)

    elif (opcion=='5'):
        print('Gracias por usar el software...')

    else:
        print('** NO es una opcion disponible **')

resultado de algoritmo

1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 1
REGISTRO ******
nombre:  juan
leccion:  50
proyecto: 70
examen:   80
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 1
REGISTRO ******
nombre:  Maria
leccion:  70
proyecto: 60
examen:   90
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 2
PONDERACION
% leccion:  30
% proyecto: 20
% examen:   50
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 3
CALCULAR
Recalculadas las notas, proceder a mostrar
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 4
LISTA
nombre, leccion, proyecto, examen, calif
juan, 50, 70, 80, 69.0
Maria, 70, 60, 90, 78.0
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 5
Gracias por usar el software...
>>> 

ejercicios resueltos Python final_it2005_t4 pdf

ejercicios resueltos Matlab final_it2005_t4 pdf

s2Eva_IT2005_T3 Adivina palabra (ahorcado)

Ejercicio: 2Eva_IT2005_T3 Adivina palabra (ahorcado)

Instrucciones en Python

# 2Eva_IT2005_T3 Adivina palabra (ahorcado)
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# propuesta: edelros@espol.edu.ec

def esvocal(letra):
    letra = letra.upper()
    vocal = 'AEIOU'
    tipo = 0
    if letra in vocal:
        tipo = 1
    return(tipo)

# INGRESO
palabra = input('¿Cuál palabra?: ')
m = len(palabra)
while m>9:
    print(' palabra de hasta 9 letras')
    palabra = input('¿Cuál palabra?: ')
    m = len(palabra)

# PROCEDIMIENTO
m = len(palabra)
palabra = palabra.upper()
cadena  = ''
vocal ='AEIOU'
falla = 0

i = 0
while i<m:
    cadena = cadena + str(i+1)
    i = i + 1

# una letra
j = 0
while (j<m) and falla<5:
    letra = palabra[j]
    cual  = esvocal(letra)
    if cual==1:
        pista = ' es vocal'
    else:
        pista = ' es consonante'
    print(cadena)
    print(str(j+1)+pista + ', fallas:'+str(falla))

    unaletra = input('¿cuál letra?: ')
    unaletra = unaletra.upper()

    if unaletra == letra:
        print(' adivinado..!')
        j = j + 1
        nueva = palabra[0:j]+cadena[j:]
        cadena = nueva
    else:
        print(' fallaste, no es la letra..!')
        falla = falla + 1

if falla>=5:
    print(' Fallaste 5 veces, perdiste..!')
else:
    print(' Felicitaciones, ganaste...!!')

Tarea: validar que el ingreso del usuario sea de una sola letra.

resultado del algoritmo

¿Cuál palabra?: conocimiento
 palabra de hasta 9 letras
¿Cuál palabra?: sabiduria
123456789
1 es consonante, fallas:0
¿cuál letra?: s
 adivinado..!
S23456789
2 es vocal, fallas:0
¿cuál letra?: i
 fallaste, no es la letra..!
S23456789
2 es vocal, fallas:1
¿cuál letra?: o
 fallaste, no es la letra..!
S23456789
2 es vocal, fallas:2
¿cuál letra?: a
 adivinado..!
SA3456789
3 es consonante, fallas:2
¿cuál letra?: x
 fallaste, no es la letra..!
SA3456789
3 es consonante, fallas:3
¿cuál letra?: y
 fallaste, no es la letra..!
SA3456789
3 es consonante, fallas:4
¿cuál letra?: z
 fallaste, no es la letra..!
 Fallaste 5 veces, perdiste..!
>>>

s2Eva_IT2005_T2 Calcular potencia recursiva

Ejercicio: 2Eva_IT2005_T2 Calcular potencia recursiva

literal a

Al ejecutar el algoritmo se obtiene:

>>> potenciaR(2,7)
128
>>> potenciaR(2,0)
1
>>> potenciaR(2,8)
256
>>>

literal b

p(2) =  17

Instrucciones en Python

# 2Eva_IT2005_T2 Calcular potencia recursiva

def potenciaR(base,exponente):
    if exponente == 0:
        z = 1
    if exponente == 1:
        z= base
    if exponente>1:
        z = base*potenciaR(base,exponente-1)
    return(z)

# literal b
# INGRESO
a = [1,2,3]
x = 2

# PROCEDIMIENTO
n = len(a)
total = 0
for i in range(0,n,1):
    termino = a[i]*potenciaR(x,i)
    total = total + termino

# SALIDA
print('p('+str(x)+') = ',total)

s2Eva_IT2005_T1 Completar cadena con padright

Ejercicio: 2Eva_IT2005_T1 Completar cadena con padright

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

La solución se simplifica al iniciar el resultado con el “mensaje” dado y a partir del siguiente espacio copiar el carácter tantas veces sea necesario hasta completar el n’esimo espacio.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2005_T1 Completar cadena con padright
# Propuesta: edelros@espol.edu.ec

def padright(mensaje,caracter,n):
    t = len(mensaje)
    z = mensaje
    siguiente = t + 1
    for i in range(siguiente,n,1):
        z = z + caracter
    return (z)

prueba de la función, luego de ejecutar algoritmo

>>> padright('Hola mundo','-',20)
'Hola mundo---------'
>>> 

ejercicios resueltos Python final_it2005_t1 pdf

ejercicios resueltos Matlab final_it2005_t1 pdf

s2Eva_IIT2004_T3 Reciclar vasos

Ejercicio: 2daEva_IIT2004_T3 Reciclar vasos

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

Se requiere usar el concepto de cociente y residuo, pues un vaso reciclado entero se obtiene con 4 vasos. Menos de 4 vasos a reciclar no producen un vaso entero, por lo que no se usan en el proceso y quedan separados como sobrantes a ser acumulados en el próximo ciclo.

Lazo mientras-repita

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2004_T3 Reciclar vasos
# Solucion propuesta para 1ra Eval. sin Funciones

# INGRESO
n = int(input('Cuantos vasos usados:'))
factor = int(input('nuevos/reciclado:'))

# PROCEDIMIENTO
total=0
while (n>=factor):
    reciclado = n//factor
    sobra = n%factor
    total = total + reciclado
    n = reciclado + sobra

# SALIDA
print('total reciclados: ', total)

Lazo repita-hasta

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2004_T3 Reciclar vasos
# Solucion propuesta para 1ra Eval. sin Funciones

# INGRESO
n = int(input('Cuantos vasos usados:'))
factor = int(input('nuevos/reciclado:'))

# PROCEDIMIENTO
total = 0
while not(n<factor):
    reciclado = n//factor
    sobra = n%factor
    total = total + reciclado
    n = reciclado + sobra

# SALIDA
print('total reciclados: ', total)

resultado del algoritmo

Cuantos vasos usados:70
nuevos/reciclado:4
total reciclados:  23
>>>
Cuantos vasos usados:7000
nuevos/reciclado:4
total reciclados:  2333
>>>

Diagrama de Flujo

Reciclar vasos 01

Diagrama de Flujo con Repita-Hasta

ejercicios resueltos Python final_iit2004_t3 pdf

ejercicios resueltos Matlab final_iit2004_t3 pdf