s2Eva_IIT2008_T2 Etiquetar a robots (R2D2)

Ejercicio: 2Eva_IIT2008_T2 Etiquetar a robots (R2D2)

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2008_T2 Etiquetar a robots (R2D2)
# Propuesta: edelros@espol.edu.ec

import random as rnd

def nrobot(n):
    # Referencias para seleccionar simbolos
    letra='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    numero='0123456789'

    nletras  = len(letra)
    mnumeros = len(numero)

    # formar cadena
    z = ''
    i = 1
    letravocal = 1
    while (i<=n):
        if letravocal==1:
            a = int(rnd.random()*nletras)
            z = z + letra[a]
            letravocal = 0
        else:
            a = int(rnd.random()*mnumeros)
            z = z + numero[a]
            letravocal = 1
        i = i + 1
        
    return (z)

resultado del algoritmo

>>> nrobot(4)
'V2F6'
>>> nrobot(4)
'F9U3'
>>> nrobot(4)
'P9L8'
>>> nrobot(4)
'L1K0'
>>> nrobot(4)
'J1J4'
>>> 

s2Eva_IIT2009_T3 Controlar saldos prepago

Ejercicio: 2Eva_IIT2009_T3 Controlar saldos prepago

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2009_T3 Controlar saldos prepago
# Propuesta: edelros@espol.edu.ec
# Registrar números de celular con listas

celular  = []
saldo    = []
mensajes = []

opcion = 0
while not(opcion==4):

    print('1. Ingresar equipo')
    print('2. Recargar saldo')
    print('3. transferir saldo')
    print('4. Salir')
    opcion = int(input('cual opcion: '))
    
    if (opcion==1):
        print('INGRESAR equipo')
        numero = input('numero celular:')
        celular.append(numero)
        saldo.append(0)
        mensajes.append(0)
        m = len(saldo)-1
        texto = str(celular[m])+' '+str(saldo[m])
        texto = texto +' '+str(mensajes[m])
        print(texto)

    elif (opcion==2):
        print('RECARGAR')
        numero   = input('numero celular: ')
        cantidad = input('    cantidad: ')

        # Busca el numero de celular
        m = len(saldo)
        encontre = -1
        i = 0
        while (i<m and encontre==-1):
            if (celular[i]==numero):
                encontre = i
            i = i + 1
            
        # si lo encuentra aumenta el saldo
        if (encontre>=0):
            saldo[encontre] = int(saldo[encontre]) + int(cantidad)
            print(encontre)
            texto = str(celular[encontre])+' '+str(saldo[encontre])
            texto = texto + ' ' + str(mensajes[encontre])
            print(texto)
        else:
            print('numero no registrado')
            
    elif (opcion==3):
        print('TRANSFERIR')
        donante  = input('numero donante : ')
        receptor = input('numero receptor: ')
        cantidad = input('       cantidad: ')

        # Busca el numero de celular donante
        m = len(saldo)
        encontreA = -1
        i = 0
        while (i<m and encontreA==-1):
            if (celular[i]==donante):
                encontreA = i
            i = i + 1
        # Busca el numero de celular receptor
        m = len(saldo)
        encontreB = -1
        i = 0
        while (i<m and encontreB==-1):
            if (celular[i]==receptor):
                encontreB = i
            i = i + 1
            
        #revisa condiciones para transferir
        condicion = encontreA>=0 and encontreB>=0 
        condicion = condicion and int(saldo[encontreA])>=int(cantidad)
        if condicion:
            saldo[encontreA] = int(saldo[encontreA])-int(cantidad)
            saldo[encontreB] = int(saldo[encontreB])+int(cantidad)
            print('saldo transferido: '+str(cantidad))
        else:
            if (encontreA==-1):
                print('no existe registro de donante:')
            if (encontreB==-1):
                print('no existe registro de receptor:')
        
    elif (opcion==4):
        print('Gracias por usar el software')
    else:
        print('opción no disponible..!')

resultado del algoritmo

1. Ingresar equipo
2. Recargar saldo
3. transferir saldo
4. Salir
cual opcion: 1
INGRESAR equipo
numero celular:987
987 0 0
1. Ingresar equipo
2. Recargar saldo
3. transferir saldo
4. Salir
cual opcion: 1
INGRESAR equipo
numero celular:876
876 0 0
1. Ingresar equipo
2. Recargar saldo
3. transferir saldo
4. Salir
cual opcion: 2
RECARGAR
numero celular: 987
    cantidad: 5
0
987 5 0
1. Ingresar equipo
2. Recargar saldo
3. transferir saldo
4. Salir
cual opcion: 2
RECARGAR
numero celular: 876
    cantidad: 1
1
876 1 0
1. Ingresar equipo
2. Recargar saldo
3. transferir saldo
4. Salir
cual opcion: 3
TRANSFERIR
numero donante : 987
numero receptor: 876
       cantidad: 3
saldo transferido: 3
1. Ingresar equipo
2. Recargar saldo
3. transferir saldo
4. Salir
cual opcion: 4
Gracias por usar el software
>>> 

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
>>> 

s2Eva_IIT2007_T4 Fibonacci recursiva

Ejercicio: 2Eva_IIT2007_T4 Fibonacci recursiva

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2007_T4 Fibonacci recursiva
# Propuesta: edelros@espol.edu.ec

def fibo(i):
    if (i==1) or (i==2):
        z = 1
    if i>2:
        z = fibo(i-1)+fibo(i-2)
    return (z)

# PROGRAMA

# INGRESO
m = int(input('valor acumulado?:'))

# PROCEDIMIENTO
s = 0
i = 1
while (s<=m):
    s = s + fibo(i)
    i = i + 1

# SALIDA
print('total de terminos:', i)
print('total acumulado:', s)

resultado del algoritmo

valor acumulado?:50
total de terminos: 9
total acumulado: 54
>>> 
valor acumulado?:60
total de terminos: 10
total acumulado: 88
>>> 

s2Eva_IT2009_T3 Mejores vendedores por categoría

Ejercicio: 2Eva_IT2009_T3 Mejores vendedores por categoría

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2009_T3 Mejores vendedores por categoría
# Propuesta: edelros@espol.edu.ec

import numpy as np

# INGRESO
n = int(input('cuantos vendedores: '))
m = int(input('cuantos productos: '))

ventas = np.zeros(shape=(n+1,m+1),dtype=int)
precio = np.zeros(shape=(m+1),dtype=float)
for f in range(1,n+1,1):
    for c in range(1,m+1,1):
        ventas[f,c] = int(input('ventas['+str(f)+','+str(c)+']: '))
for pd in range(1,m+1,1):
    precio[pd] = float(input('Precio['+str(pd)+']: '))

# PROCEDIMIENTO

#categoria ventas
unidades = np.zeros(shape=(n+1),dtype=int)
for f in range(1,n+1,1):
    for c in range(1,m+1,1):
        unidades[f] = unidades[f]+ventas[f,c]
mventas = 1
for f in range(1,n+1,1):
    if unidades[f]>unidades[mventas]:
        mventas = f

# categoria montos
monto = np.zeros(shape=(n+1),dtype=float)
for f in range(1,n+1,1):
    for c in range(1,m+1,1):
        monto[f] = monto[f] + ventas[f,c]*precio[c]
mmonto = 1
for f in range(2,n+1,1):
    if monto[f]>monto[mmonto]:
        mmonto = f

# SALIDA
print('Mejor vendedor/unidades', mventas)
print('Mejor vendedor/monto', mmonto)

s2Eva_IIT2008_T3 Crear un Calendario

Ejercicio: 2Eva_IIT2008_T3 Crear un Calendario

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

Solución presentada junto a video de concepto:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2008_T3 Crear un Calendario
# Propuesta: edelros@espol.edu.ec

import numpy as np

dprimer = int(input('¿día de inicio del mes?: '))
diasmes = int(input('¿días del mes?: '))

# El calendario vacío al inicio
calendario = np.zeros(shape=(6,7), dtype=int)
c = dprimer - 1
f = 0
dia = 1
while (f<=5 and dia<=diasmes):
    while (c<=6 and dia<=diasmes):
        calendario[f,c] = dia
        dia = dia + 1
        c = c + 1
    f = f + 1
    c = 0

print('   D  L  M  M  J  V  S')
print(calendario)
# Tarea: Validar primer día del mes entre 1 y 7, 
#    y número de días del mes entre 28 y 31

resultado del algoritmo

¿día de inicio del mes?: 4
¿días del mes?: 31
   D  L  M  M  J  V  S
[[ 0  0  0  1  2  3  4]
 [ 5  6  7  8  9 10 11]
 [12 13 14 15 16 17 18]
 [19 20 21 22 23 24 25]
 [26 27 28 29 30 31  0]
 [ 0  0  0  0  0  0  0]]
>>> 

s2Eva_IT2008_T2 Validar cédula ecuatoriana

Ejercicio: 2Eva_IT2008_T2 Validar cédula ecuatoriana

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

Resultado del algoritmo

>>> vcedula('0909407173')
1
>>> vcedula('0909407174')
0
>>> 

Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2008_T2 Validar cédula ecuatoriana
# Propuesta de solución: edelros@espol.edu.ec

def vcedula(texto):
    # sin ceros a la izquierda
    nocero = texto.strip("0")
    
    cedula = int(nocero,0)
    verificador = cedula%10
    numero = cedula//10
    
    # mientras tenga números
    suma = 0
    while (numero > 0):
        
        # posición impar
        posimpar = numero%10
        numero   = numero//10
        posimpar = 2*posimpar
        if (posimpar  > 9):
            posimpar = posimpar-9
        
        # posición par
        pospar = numero%10
        numero = numero//10
        
        suma = suma + posimpar + pospar
    
    decenasup = suma//10 + 1
    calculado = decenasup*10 - suma
    if (calculado  >= 10):
        calculado = calculado - 10

    if (calculado == verificador):
        validado = 1
    else:
        validado = 0
        
    return (validado)

s2Eva_IIT2009_T1 Mensaje a SMS

Ejercicio: 2Eva_IIT2009_T1 Mensaje a SMS

Propuesta de solución en Python:

Ejemplo, solo para 'de'-'d':
>>> mensaje='un estudiante de la espol que estudia'
>>> txtsms(mensaje)
'un estudiante d la espol que estudia'

Algoritmo en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2009_T1 Mensaje a SMS
# TAREA: completarotras opciones: que,se,lo

def txtsms(mensaje):
    tm=len(mensaje)
    
    # inicializa variable de salida
    sms = ''
    i = 0
    while not(i>=(tm)):
        
        # si encuentra una 'd' se salta un espacio
        if (mensaje[i-1]=='d' and mensaje[i-2]==' '
            and mensaje[i+1]==' '):
            i = i + 1
            
        # copia un caracter
        sms = sms + mensaje[i]
        i = i + 1
        
    return(sms)

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