Ejemplo, solo para 'de'-'d':
>>> mensaje='un estudiante de la espol que estudia'
>>> txtsms(mensaje)
'un estudiante d la espol que estudia'
El nuevo mensaje se realiza copiando el mensaje letra por letra y analizando cada una para revisar si aplica la regla de sms.
Para el ejemplo solo para la letra 'd', se revisa las letras anteriores y posteriores para estimar que se puede saltar la copia de la letra.
considere que para el análisis planteado i tiene que ser mayor que 1, sino se mostrará error al no tener suficientes letras previas
>>> mensaje='de su mensaje sms'
>>> txtsms(mensaje)
'de su mensaje sms'
implemente el caso presentado en el algoritmo presentado a continuación:
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 2Eva_IIT2009_T1 Mensaje a SMS# TAREA: completarotras opciones: que,se,lodeftxtsms(mensaje):
tm=len(mensaje)
# inicializa variable de salida
sms = ''
i = 0
whilenot(i>=(tm)):
# si encuentra una 'd' se salta un espacioif (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)
Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 2Eva_IT2009_T3 Mejores vendedores por categoría# Propuesta: edelros@espol.edu.ecimport 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 inrange(1,n+1,1):
for c inrange(1,m+1,1):
ventas[f,c] = int(input('ventas['+str(f)+','+str(c)+']: '))
for pd inrange(1,m+1,1):
precio[pd] = float(input('Precio['+str(pd)+']: '))
# PROCEDIMIENTO#categoria ventas
unidades = np.zeros(shape=(n+1),dtype=int)
for f inrange(1,n+1,1):
for c inrange(1,m+1,1):
unidades[f] = unidades[f]+ventas[f,c]
mventas = 1
for f inrange(1,n+1,1):
if unidades[f]>unidades[mventas]:
mventas = f
# categoria montos
monto = np.zeros(shape=(n+1),dtype=float)
for f inrange(1,n+1,1):
for c inrange(1,m+1,1):
monto[f] = monto[f] + ventas[f,c]*precio
mmonto = 1
for f inrange(2,n+1,1):
if monto[f]>monto[mmonto]:
mmonto = f
# SALIDAprint('Mejor vendedor/unidades', mventas)
print('Mejor vendedor/monto', mmonto)
Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf
Solución presentada junto a video de concepto:
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 2Eva_IIT2008_T3 Crear un Calendario# Propuesta: edelros@espol.edu.ecimport 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]]
>>>
Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 2Eva_IIT2008_T2 Etiquetar a robots (R2D2)# Propuesta: edelros@espol.edu.ecimport random as rnd
defnrobot(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)
El movimiento de cada caracol se simula con un número aleatorio.
mueveA = int(rnd.random()*5)-1
A = A + mueveA
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 2Eva_IIT2008_T1 Carrera de caracoles# solo dos caracolesimport random as rnd
# INGRESO
meta = int(input('meta maxima: '))
# PROCEDIMIENTO
A = 0
B = 0
t = 0
while (A<meta and B<meta):
mueveA = int(rnd.random()*5)-1
A = A + mueveA
mueveB = int(rnd.random()*5)-1
B = B + mueveB
t = t + 1
gana = 0
if (A>B):
gana = 1
if (B>A):
gana = 2
# SALIDAprint('ganó el caracol: ',gana)
print('tiempo transcurrido: ', t)
Resultado del algoritmo
meta maxima: 50
ganó el caracol: 2
tiempo transcurrido: 38
>>>
meta maxima: 50
ganó el caracol: 1
tiempo transcurrido: 39
>>>
Algoritmo en Python
Carrera para n caracoles use un vector e indices entre 1 y n
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 2Eva_IIT2008_T1 Carrera de caracolesimport random as rnd
import numpy as np
# INGRESO
meta = int(input('meta maxima: '))
n = int(input('cuantos jugadores: '))
# PROCEDIMIENTO# no se usa la posicion 0, caracoles entre[1,n]
posicion = np.zeros(n+1, dtype = int)
t = 0
gana = 0
whilenot(gana>0):
jugador = 0
whilenot(jugador>=n):
mueve = int(rnd.random()*5)-1
posicion[jugador] = posicion[jugador] + mueve
if (posicion[jugador]>meta):
gana = jugador
jugador = jugador +1
t = t + 1
# SALIDAprint('posiciones finales:')
print(posicion)
print('ganó el caracol: ',gana)
print('tiempo transcurrido: ', t)
resultado de algoritmo
meta maxima: 50
cuantos jugadores: 5
posiciones finales:
[38 44 44 32 51 0]
ganó el caracol: 4
tiempo transcurrido: 39
>>>
meta maxima: 50
cuantos jugadores: 5
posiciones finales:
[46 52 42 33 35 0]
ganó el caracol: 1
tiempo transcurrido: 36
>>>
Propuesta de solución en Python: py_pdf, también en versión matlab : m_pdf
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# 2Eva_IIT2007_T4 Fibonacci recursiva# Propuesta: edelros@espol.edu.ecdeffibo(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
# SALIDAprint('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
>>>
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.ecimport random as rnd
defimpar(n):
if (n==0):
z = 0
if (n>0):
z = par(n-1)
return (z)
defpar(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
whilenot(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
# salidaprint(' 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
>>>
Propuesta de solución en Python, continua desde tema 1:
Algoritmo en Python
# ICM00794-Fundamentos de Computación - FCNM-ESPOL# propuesta: edelros@espol.edu.ec# 2Eva_IT2013_T1 Una Tabla de Bingoimport random as rnd
import numpy as np
defsorteoentre(k,a,b):
suertudos = []
i = 0
whilenot(i>=k):
sorteo = int(rnd.random()*(b-a+1))+a
ifnot(sorteo in suertudos):
suertudos.append(sorteo)
i = i+1
return(suertudos)
# 2Eva_IT2013_T2 Una Tabla de Bingo
n = 5
#Rango inicial de B [1,15]
a = 1
b = 15
incremento = 15
# PROCEDIMIENTO
tabla = np.zeros(shape=(n,n),dtype=int)
columna = 0
whilenot(columna>=n):
datos = sorteoentre(n,a,b)
for fila inrange(0,n,1):
tabla[fila,columna]=datos[fila]
a = a + incremento
b = b + incremento
columna = columna + 1
# corrige el cero en la posicion central
mitad = n//2
tabla[mitad,mitad] = 0
# SALIDAprint(tabla)