s2Eva_IIT2008_T1 Carrera de caracoles

Propuesta de solución en Python para dos caracoles A y B:

# 2da Evaluación II Término 2008
# Tema 1. carrera caracoles
# solo dos caracoles

import 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 (A>B):
    gana = 2
    
# SALIDA
print('ganó el caracol: ',gana)
print('tiempo transcurrido: ', t)

Carrera para n caracoles usando un vector e indices entre 1 y n

# 2da Evaluación II Término 2008
# Tema 1. carrera caracoles
import 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
while not(gana>=0):
    jugador = 0
    while not(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

# SALIDA
print('posiciones finales:')
print(posicion)
print('ganó el caracol: ',gana)
print('tiempo transcurrido: ', t)

s1Eva_IIT2007_T2 Juego de la Ruleta

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

Use vectores para llevar el control de apuestas y las veces que gana cada jugador. En el ejercicio se crean los vectores con arreglos y Numpy.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluación II Término 2007. Tema 2. Ruleta
# Propuesta: edelros@espol.edu.ec

import numpy as np
import random as rnd

# INGRESO
n = int(input('¿cuántos jugadores?: '))
m = int(input('¿cuántas rondas?: '))

gana = np.zeros(n+1, dtype=int)
apuesta = np.zeros(n+1, dtype=int)

ronda = 1
while (ronda<=m):

    # Ingreso de apuestas
    j = 1
    while (j<=n):
        print('jugador (',j,') ')
        apuesta[j] = int(input('  número apostado: '))
        j = j+1

    ruleta = int(rnd.random()*37)+1
    print('Número ruleta: ', ruleta)

    # Revisa ganadores
    j = 1
    while (j<=n):
        if (ruleta==apuesta[j]):
            gana[j] = gana[j]+1   
        j=j+1
    ronda = ronda +1

# SALIDA
print('Los resultados son:')
j=1
while (j<=n):
    print(' jugador(',j,') ganó ',gana[j],' veces \n')
    j=j+1

Tarea: validar que el número de la apuesta esté en el tablero.

un ejemplo de ejecución:

cuantos jugadores: 2
cuantas rondas: 2
jugador ( 1 ) 
  número apostado: 3
jugador ( 2 ) 
  número apostado: 24
Número ruleta:  36
jugador ( 1 ) 
  número apostado: 34
jugador ( 2 ) 
  número apostado: 12
Número ruleta:  34
Los resultados son:
 jugador( 1 ) ganó  1  veces 

 jugador( 2 ) ganó  0  veces 

>>> 

s1Eva_IIT2007_T3 Garantías de prestamos IESS

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluación II Término 2007
# Tema 3. IESS Intersección de listados
# propuesta: edelros@espol.edu.ec

import numpy

# INGRESO
n = int(input('Afiliados con Fondo de Reserva: '))

freserva = numpy.zeros(n+1,dtype=int)
i = 1
while not(i>n):
    print(i)
    freserva[i] = input('ingrese cedula:')
    i = i+1

m = int(input('Afiliados con Cesantia: '))
cesantia = numpy.zeros(m+1,dtype=int)
j = 1
while not(j>m):
    print(j)
    cesantia[j] = input('ingrese cedula:')
    j = j+1

# PROCEDIMIENTO
# Hipotesis: Ninguno cumple requisito
cumple=numpy.zeros(n+1,dtype=int)

# Revisa listado buscando iguales
total = 0
i = 1
while not(i>n):
    j = 1
    while not(j>m or cumple[i]==1):
        if freserva[i]==cesantia[j]:
            cumple[i]=1
            total=total+1
        j = j+1
    i = i+1

# SALIDA: Muestra cedulas de los que cumplen requisito
print('Cumplen requisitos:')
print(total)
print('listado: ')
i = 1
while not(i>n):
    if (cumple[i]==1):
        print(freserva[i])
    i = i+1

s1Eva_IT2008_T2 Criba de Eratóstenes

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluacion I Término 2008
# Tema 2. Criba Eratostenes
# Propuesta: edelros@espol.edu.ec

import numpy

n = int(input('primos menores que :'))

# PROCEDIMIENTO
marcado = numpy.zeros((n+1),dtype=int)
criba = 2
while (criba<=n):
    marcado[criba] = 1
    criba = criba+1
criba = 2
while (criba<=n):
    i = criba*2
    while (i<=n):
        marcado[i] = 0
        i = i+criba
    criba = criba+1

# SALIDA
criba = 2
while (criba<=n):
    if marcado[criba]==1:
        print(criba)
    criba = criba+1

s1Eva_IIT2008_T1 Odometro OCTAL

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluacion II Termino 2008
# Tema 1. Odometro OCTAL
# Propuesta de solución. edelros@espol.edu.ec
# Tarea: Validar que el ingreso sea en octal.

octal = int(input('¿numero en octal?: '))

# PROCEDIMIENTO
i = 0
decimal = 0
while (octal>0):
    r = octal%10
    octal = octal//10
    decimal = decimal+r*(8**i)
    i = i+1

# SALIDA
print('valor en decimal: ')
print(decimal)

s1Eva_IT2008_T3 Simular Precio del Petróleo

Propuesta de solución en Python: py_pdf

También como diagrama en pdf y en versión matlab: m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval I Término 2008 
# Tema 3. Precio petroleo
# Propuesta: edelros@espol.edu.ec
# Tarea: Realizar el literal c)

import random

n=int(input('días del mes: '))

# PROCEDIMIENTO
prcmax = 150
prcmin = 130
rango = prcmax-prcmin+1
diamenor = 1
pmenor = prcmax

dia = 1
total = 0
while (dia<=n):
    precio = int(random.random()*rango)+prcmin
    total = total+precio

    if (precio<pmenor):
        diamenor = dia
        pmenor = precio

    dia = dia+1

promedio = total/n

print('promedio: ')
print(promedio)
print('dí­a de menor precio:')
print(diamenor)

Versión Usando Arreglos:

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval I Término 2008 
# Tema 3. Precio petroleo-Arreglo
# Propuesta: edelros@espol.edu.ec

import random
import numpy

n = int(input('dí­as del mes: '))

# PROCEDIMIENTO
prcmax = 150
prcmin = 130
rango = prcmax-prcmin+1
precio = numpy.zeros((n+1),dtype=int)

# algoritmo promedio
total = 0
dia = 1
while (dia<=n):
    precio[dia] = int(random.random()*rango)+prcmin
    total = total+precio[dia]
    dia = dia+1

promedio=total/n

# algoritmo menor
diamenor = 1
dia = 1
while (dia<=n):
    if precio[dia]<precio[diamenor]:
        diamenor = dia
    dia = dia+1

# algoritmo precio superior al promedio
superior = 0
dia = 1
while (dia<=n):
    if precio[dia]>promedio:
        superior = superior+1
    dia = dia+1

# SALIDA
print('promedio: ')
print(promedio)
print('dí­a de menor precio:')
print(diamenor)
print('dí­as con precio sobre promedio:')
print(superior)

s1Eva_IT2007_T1 Juego Tiro al Blanco con Dardos

Propuesta de solución en Python: python en pdf, también en version matlab en pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluación I Término 2007 - 2008
# Tema 1. Tiro al blanco
# Propuesta solucion: edelros@espol.edu.ec

import random
import math

n = int(input('numero de dardos: '))

# PROCEDIMENTO
premio = 0
i = 0
while (i<n):
    x = (random.random()*160)-80
    y = (random.random()*160)-80
    d = math.sqrt(x**2+y**2)

    if (d<10):
        premio = premio+50
    if (d>=10 and d<40):
        premio = premio+40
    if (d>=40 and d<80):
        premio = premio+30

    i = i+1

# SALIDA
print(' El total ganado es:')
print(premio)

Desarrollo con lazo repita-hasta:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluación I Término 2007 - 2008
# Tema 1. Tiro al blanco
# Propuesta solucion: edelros@espol.edu.ec

import random
import math

n = int(input('numero de dardos: '))

# PROCEDIMIENTO
premio = 0
i = 0
while not(i>=n):
    x = (random.random()*160)-80
    y = (random.random()*160)-80
    d = math.sqrt(x**2+y**2)

    if (d<10):
        premio = premio+50
    if (d>=10 and d<40):
        premio = premio+40
    if (d>=40 and d<80):
        premio = premio+30

    i = i+1

# SALIDA
print(' El total ganado es:')
print(premio)

s1Eva_IIT2007_T1 Hormiga y arroz

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

Usando lazo Mientras-Repita:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
# Propuesta de solución. edelros@espol.edu.ec

import random
import math

xh = int(input('coordenada x hormiga: '))
yh = int(input('coordenada y hormiga: '))

# PROCEDIMIENTO
xa = 10
ya = 8
dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)
encontrado = 0
turno = 0
while (turno<100 and encontrado==0):
    dir = int(random.random()*4)+1
    pasos = int(random.random()*3)+1

    if dir==1:
        yh = yh+pasos
    if dir==2:
        yh = yh-pasos
    if dir==3:
        xh = xh+pasos
    if dir==4:
        xh = xh-pasos
    if (xh==xa and yh==ya):
        encontrado = 1

    d = math.sqrt((xh-xa)**2+(yh-ya)**2)
    if d>dmayor:
        dmayor = d
    turno = turno+1

# SALIDA
print('estado encontrado: ')
print(encontrado)
print('turnos simulados: ')
print(turno)
print('distancia más lejana: ')
print(dmayor)

Usando lazo Repita-Hasta:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Eval II Termino 2007. Tema 1. Hormiga y arroz
# Propuesta de solución. edelros@espol.edu.ec

import random
import math

xh = int(input('coordenada x hormiga: '))
yh = int(input('coordenada y hormiga: '))

# PROCEDIMIENTO
xa = 10
ya = 8
dmayor = math.sqrt((xh-xa)**2+(yh-ya)**2)

encontrado = 0
turno = 0
while not(turno>=100 or encontrado!=0):
    dir = int(random.random()*4)+1
    pasos = int(random.random()*3)+1
    if dir==1:
        yh = yh+pasos
    if dir==2:
        yh = yh-pasos
    if dir==3:
        xh = xh+pasos
    if dir==4:
        xh = xh-pasos
    if (xh==xa and yh==ya):
        encontrado = 1

    d = math.sqrt((xh-xa)**2+(yh-ya)**2)
    if d>dmayor:
        dmayor = d

    turno=turno+1

# SALIDA
print('estado encontrado: ')
print(encontrado)
print('turnos simulados: ')
print(turno)
print('distancia más lejana: ')
print(dmayor)

s1Eva_IT2009_T1 Suma de serie con signo alternado

Propuesta de solución en Python: python.pdf, también versión en matlab.pdf

Lazo mientras-repita:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluación I Término 2009. 
# Tema 1. Suma de Serie con signo alternado
# Propuesta de solución. edelros@espol.edu.ec

n = int(input('¿Cuántos términos?: '))

i = 1
s = 0
signo = 1
while (i<=n):
    s = s+signo*(1/i)
    i = i+1
    signo = (-1)*signo

print(s)

lazo repita-hasta:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 1ra Evaluación I Término 2009. 
# Tema 1. Suma de Serie con signo alternado
# Propuesta de solución. edelros@espol.edu.ec

n = int(input('¿Cuántos términos?: '))

i = 1
s = 0
signo = 1
while not(i>n):
    s = s+signo*(1/i)
    i = i+1
    signo = (-1)*signo

print(s)

s1Eva_IIT2007_T1 Hormiga busca arroz

Propuesta de solución en Python: python.pdf, también en versión matlab.pdf.

Se presenta un primer esquema para desarrollar los detalles.

# 1ra Evaluacion II Termino 2007
# Tema 1. Hormiga y arroz
import random

xa=int(input(' x arroz: '))
ya=int(input(' y arroz: '))

xh=int(input(' x hormiga: '))
yh=int(input(' y hormiga: '))

encontro = 0
t=0
while not((xh==xa and yh==ya) or t>100):
    d=int(random.random()*4)+1
    if (d==1):
        yh=yh+1
    if (d==2):
        yh=yh-1
    if (d==3):
        xh=xh+1
    if (d==4):
        xh=xh-1

    if (xh==xa and yh==ya):
        encontro=1
        
    t=t+1

print(encontro)