s3Eva_IT2004_T2 Realizar el producto vectorial

Ejercicio: 3Eva_IT2004_T2 Realizar el producto vectorial

resultado obtenido

[-1, 2, 7]
>>> 

Instrucciones en Python

# 3Eva_IT2004_T2 Realizar el producto vectorial

# INGRESO
A = [1,3,1]
B = [-2,1,0]

# PROCEDIMIENTO
c0 = A[1]*B[2]-B[1]*A[2]
c1 = A[0]*B[2]-B[0]*A[2]
c2 = A[0]*B[1]-B[0]*A[1]

C = [c0,c1,c2]

# SALIDA
print(C)

s3Eva_IT2004_T1 Buscar número al lanzar el dado

Ejercicio: 3Eva_IT2004_T1 Buscar número al lanzar el dado

resultado para la función del enunciado

>>> al_fin(2,7)
2
>>> al_fin(2,7)
12
>>> al_fin(2,7)
5
>>> 

Tarea, realizar el programa requerido en el enunciado usando la función al_fin(n,k)

Instrucciones Python

# 3Eva_IT2004_T1 Buscar número al lanzar el dado
import random as rnd

def al_fin(n,k):
    veces = 0
    exitos = 0
    while exitos == 0:
        aleatorio = int(rnd.random()*6)+1
        if aleatorio == n:
            exitos = exitos+1
        veces = veces + 1
    return(veces) 

# Tarea, realizar el programa requerido

s3Eva_IIIT2004_T4 Enmascara frase cambiando pareja de letras

Ejercicio: 3Eva_IIIT2004_T4 Enmascara frase cambiando pareja de letras

resultado obtenido:

frase :TE SALUDO
enmascarada:   ETLASODU
>>>

Instrucciones en Python

# 3Eva_IIIT2004_T4 Enmascara frase cambiando pareja de letras

# INGRESO
frase = input('frase :')
salto = 2

# PROCEDIMIENTO
n = len(frase)
# posiciones iniciales de letras
posicion = []
for i in range(0,n,1):
    posicion.append(i)

# intercambia posiciones
i = 0
while i<n:
    if (i+salto)<n:
        temporal = posicion[i]
        posicion[i] = posicion[i+salto]
        posicion[i+salto] = temporal
    i = i + salto + 1

# reordena letras
reordena = ''
for i in range(0,n,1):
    cual = posicion[i]
    reordena = reordena + frase[cual]

# SALIDA
print('enmascarada: ', reordena)

s3Eva_IIIT2004_T1 Carrera de ranas

Ejercicio: 3Eva_IIIT2004_T1 Carrera de ranas

Resultados esperados:

longitud de la pista: 20
ganador:  A
saltos:  16
>>> 

longitud de la pista: 20
ganador:  B
saltos:  23
>>> 

Instrucciones Python

# 3Eva_IIIT2004_T1 Carrera de ranas
import random as rnd

# INGRESO
n = int(input('longitud de la pista: '))

# PROCEDIMIENTO
A = 0
B = 0 
turno = 0
gana = ''
while gana=='':
    saltoA = int(rnd.random()*3)+0
    saltoB = int(rnd.random()*3)+0
    A = A + saltoA
    B = B + saltoB
    turno = turno + 1
    if A>n:
        gana = 'A'
    if B>n:
        gana = 'B'

# SALIDA
print('ganador: ', gana)
print('saltos: ',turno)

Tarea: Considere que los turnos de saltos no corresponden a los saltos de cada rana, observe cuando se queda en el mismo puesto, no es un salto.

s3Eva_IT2004_T3 Multiplicar con campesino egipcio

Ejercicio: 3Eva_IT2004_T3 Multiplicar con campesino egipcio

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

Literal a. La función en forma recursiva considera cuatro casos para q y el residuo de q con 2. Usar un condicional en cada caso siguiendo lo descrito en la fórmula.

mult(p,q) = \begin {cases} 0 , && q=0 \\ p ,&& q=1 \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big) , && q\ge 2 \text {, q es par} \\ mult \Big(2p,cociente\big(\frac{q}{2}\big)\Big)+p , && q\ge 2 \text{, q es impar }\end{cases}

Literal b.  Requiere que sea un programa estructurado, separando las partes de las funciones de usuario y el programa que lo usa.

En el bloque de ingreso del programa se pide cuál tabla de multiplicar se va a generar. Se require que la tabla se genere usando la función creada en el literal a.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2004_T3 Multiplicar con campesino egipcio
# propuesta: edelros@espol.edu.ec

def mult(p,q):
    if q==0:
        z = 0
    if q==1:
        z = p
    r = (q%2)
    if (q>=2 and r==0):
        z = mult(2*p, int(q/2))
    if (q>=2 and r>0):
        z = mult(2*p, int(q/2))+p
    return (z)

# PROGRAMA ---------------
import numpy as np

# INGRESO
n = int(input('¿cual tabla?: '))

# PROCEDIMIENTO
r = np.zeros(13,dtype=int)
i = 1
while (i<=12):
    r[i] = mult(n,i)
    i = i + 1

# SALIDA
i=1
while (i<=12):
    print(str(n)+' x '+str(i)+' = ',str(r[i]))
    i = i + 1

Tarea: validar n entre cero y 12

resultado del algoritmo

¿cual tabla?: 8
8 x 1 =  8
8 x 2 =  16
8 x 3 =  24
8 x 4 =  32
8 x 5 =  40
8 x 6 =  48
8 x 7 =  56
8 x 8 =  64
8 x 9 =  72
8 x 10 =  80
8 x 11 =  88
8 x 12 =  96
>>> 

s3Eva_IT2005_T4 Tabla de Pozo millonario

Ejercicio: 3Eva_IT2005_T4 Tabla de Pozo millonario

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2005_T4 Tabla de Pozo millonario
# Propuesta de solucion: edelros@espol.edu.ec

import numpy as np
import random as rnd

# INGRESO
n = int(input('seleccionar:'))
m = int(input('de cuantos:' ))

# PROCEDIMIENTO
# Ninguno seleccionado
tabla = np.zeros(m+1,dtype=int)

# sorteando sin repetir
i = 1
while not(i>n):
    sorteado = int(rnd.random()*m)+1
    if (tabla[sorteado]==0):
        tabla[sorteado] = 1
        i = i + 1

#SALIDA
k = 1
print('Los numeros de la tabla son:')
while not(k>m):
    if (tabla[k]==1):
        print(k)
    k = k + 1

resultado del algoritmo

seleccionar: 10
de cuantos: 20
Los numeros de la tabla son:
1
3
4
5
10
11
12
16
17
19
>>> 

Tarea: extraer los sorteados en otro arreglo que contenga solo los números seleccionados

s3Eva_IT2005_T2 Juego biológico

Ejercicio: 3Eva_IT2005_T2 Juego biológico

Propuesta de solución en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2005_T2 Juego biológico
# propuesta: edelros@espol.edu.ec
# por ser semejante, se usa la funcion de: 
#  3Eva_IT2006_T4 Juego planta bombas (buscaminas)

# TAREA: Desarrollar sobrepoblacion del enunciado

import numpy as np
import random as rnd

def plantabombas(m,n):
    campo = np.zeros(shape=(n,n),dtype=int)
    bomba = 1
    while not(bomba>m):
        fila = int(rnd.random()*n)+0
        columna = int(rnd.random()*n)+0
        if (campo[fila,columna]==0):
            campo[fila,columna] = 1
            bomba = bomba + 1
    return(campo)

def porcentaje(campo):
    tamano = np.shape(campo)
    n = tamano[0]
    m = tamano[1]
    suma = 0
    fila = 0
    while not(fila>=n):
        columna = 0
        while not(columna>=m):
            suma = suma + campo[fila,columna]
            columna = columna + 1
        fila = fila + 1
    z = 100*suma/(n*n)
    return(z)

# PROGRAMA ---------------------
n = int(input('tamaño de matriz:'))
m = int(input('cantidad seres vivos: '))

# PROCEDIMIENTO
biologico  = plantabombas(m,n)
participa1 = porcentaje(biologico)

# TAREA: Desarrollar sobrepoblacion del enunciado
# crear biologico2 aplicando lo solicitado
# participa2 = porcentaje(biologico2)

# SALIDA
print(biologico)
print('porcentaje inicial:', participa1)

# TAREA: print('porcentaje final: ', participa2)

Ejemplo de lo realizado, falta completar.:

>>> 
tamaño de matriz:5
cantidad seres vivos: 15
[[0 0 1 0 0]
 [0 1 1 1 0]
 [1 1 1 0 1]
 [1 0 1 1 0]
 [1 1 1 0 1]]
porcentaje inicial: 60.0
>>>

s3Eva_IIT2006_T1 Crear usuarios en lista de nombres

Ejercicio: 3Eva_IIT2006_T1 Crear usuarios en lista de nombres

Propuesta de solución en Python:

Ejemplo:
>>> 
cuantos empleados: 3
primer nombre: JUAN
segundo nombre: PEDRO
apellido paterno: RODRIGUEZ
primer nombre: MARIA
segundo nombre: ROSA
apellido paterno: PEREZ
primer nombre: CARLOS
segundo nombre: JOSE
apellido paterno: CASTRO
jprodrig
mrperez
cjcastro

algoritmo en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2006_T1 Crear usuarios en lista de nombres
# propuesta: edelros@espol.edu.ec

def user(nombre1,nombre2,apellidop):
    z = ''
    i = 0
    z = z+nombre1[i]
    z = z+nombre2[i]

    # copiar letras del apellido
    n = len(apellidop)

    # Revisando si no hay suficientes letras en el apellido
    i = 0
    while not(i>=6 or i>=n):
        z = z+apellidop[i]
        i = i+1
    z = z.lower()
    return(z)

# PROGRAMA
m = int(input('cuantos empleados: '))
empleado = []
i = 0
while not(i>=m):
    nombre1 = input('primer nombre: ')
    nombre2 = input('segundo nombre: ')
    apellidop = input('apellido paterno: ')
    registro = {'nombre1':nombre1,'nombre2':nombre2,
              'apellidop':apellidop,'usuario':''}
    empleado.append(registro)
    i = i+1

# PROCEDIMIENTO
i = 0
while not(i>=m):
    a = empleado[i]['nombre1']
    b = empleado[i]['nombre2']
    c = empleado[i]['apellidop']
    z = user(a,b,c)
    empleado[i]['usuario'] = z
    i = i+1

# SALIDA
i = 0
while not(i>=m):
    print(empleado[i]['usuario'])
    i = i + 1

s3Eva_IT2006_T4 Juego planta bombas (buscaminas)

Ejercicio3Eva_IT2006_T4 Juego planta bombas (buscaminas)

Nota: contiene tareas por realizar, revisar comentarios en las instrucciones

Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2006_T4 Juego planta bombas (buscaminas)
# propuesta: edelros@espol.edu.ec
import numpy as np
import random as rnd

def plantabombas(m,n):
    campo = np.zeros(shape=(n,n),dtype=int)
    
    bomba = 1
    while not(bomba>m):
        fila = int(rnd.random()*n)+0
        columna = int(rnd.random()*n)+0
        
        if (campo[fila,columna] == 0):
            campo[fila,columna] = 1
            bomba = bomba + 1
            
    return(campo)

# PROGRAMA --------------

# INGRESO
n = int(input('tamaño de tablero[n,n]: '))
m = int(input('cantidad de minas:'))

# TAREA: validar que la cantidad de minas
# sea menor que casillas en tablero

f = int(input('coordenada fila:'))
while not(f>0 and f<(n-1)):
    f = int(input('coordenada fila:'))

c = int(input('coordenada columna:'))
while not(c>0 and c<(n-1)):
    c = int(input('coordenada columna:'))

# PROCEDIMIENTO
# Crear tablero con bombas
territorio = plantabombas(m,n)

# solamente si no hay bomba al aterrizar reporta
if (territorio[f,c] == 0):
    vertical   = territorio[f-1,c]+territorio[f+1,c]
    horizontal = territorio[f,c-1]+territorio[f,c+1]
    # TAREA: Completar las casillas en diagonal
    reporta = vertical + horizontal
else:
    reporta = -1

# SALIDA
print('reporte de llegada: ',reporta)
print('territorio: ')
print(territorio)

Ejemplo, aún falta desarrolar la parte de tarea:

tamaño de tablero[n,n]: 8
cantidad de minas:40
coordenada fila:3
coordenada columna:3
reporte de llegada:  4
territorio: 
[[1 1 0 1 1 1 1 1]
 [1 0 1 0 0 1 1 1]
 [0 1 1 1 1 1 1 0]
 [1 1 1 0 1 1 0 1]
 [0 1 0 1 1 1 0 0]
 [1 0 0 0 1 0 0 0]
 [1 0 1 0 0 1 1 1]
 [1 1 0 1 1 0 0 1]]
>>>