s1Eva_IT2004_T3 Sortear parejas para tenis

Propuesta de solución en Python:

# Parcial I Término 2004
# Tema 3. Sortear parejas para tenis

import random as rnd
import numpy as np

# ingreso
n = int(input('cuantas parejas: '))

# Procedimiento
pareja = np.zeros(2*n+1,dtype=int)
veces =  np.zeros(n+1, dtype=int)

dama = n+1
while not(dama>(2*n)):
    quien = int(rnd.random()*n)+1
    pareja[dama] = quien
    veces[quien] = veces[quien]+1
    dama = dama+1

# Salida
print(pareja[n+1:])
print('veces: ')
print(veces)

print('juegan varias veces: ')
caballero = 1
while not(caballero>n):
    if (veces[caballero]>1):
        print(caballero)
    caballero =  caballero +1

print('los que no juegan: ')
caballero = 1
while not(caballero>n):
    if (veces[caballero]==0):
        print(caballero)
    caballero =  caballero +1

con un ejemplo de resultado:

cuantas parejas: 10
[ 6  2  1  8  3  9 10  1  7  9]
veces: 
[0 2 1 1 0 0 1 1 1 2 1]
juegan varias veces: 
1
9
los que no juegan: 
4
5
>>> 

s1Eva_IT2005_T4 Lanza penales

Propuesta de solución en Python:

# Parcial I Término 2005
# Tema 4. lanza penales
import random as rnd

conseguido = 0
lanza = 0
while not(lanza==5):

    # Patea
    print('Penal número: ', lanza)
    patea = int(input('donde patea: '))
    while not(patea>=1 and patea<=6):
        patea = int(input('OE!..donde patea: '))

    # Arquero
    arquero = int(rnd.random() * 6) +1

    # Gol/tapa
    if not(patea==arquero):
        gol=1
    else:
        gol=0

    conseguido = conseguido + gol
    lanza=lanza+1

    # Resultado
    print('patea, arquero, gol/tapa')
    print(patea, arquero, gol)

print('*** Goles conseguidos: ', conseguido)

s1Eva_IIT2006_T2 Dígito verificador de cuenta

Propuesta de solución en Python, otras propuestas : py_pdf, m_pdf

Opción 1. Usando lazos, es más general para usar mayor cantidad de dígitos

# 1ra Evaluación II Termino 2006
# Tema 2. Verificador cuenta. Ejercicio Básico
# INGRESO
codigo = int(input('escriba el codigo completo: '))

# PROCEDIMIENTO
escrito = codigo%10
numero = codigo//10

multimpar = 1
sumapar = 0
while not(numero<=0):
    impar = numero%10
    numero = numero//10
    multimpar = multimpar*impar
    par = numero%10
    numero = numero//10
    sumapar = sumapar+par
suma = sumapar + multimpar
calculado = suma%10

if (escrito == calculado):
    respuesta = 1
else:
    respuesta = 0

# SALIDA
print(respuesta)

Opción 2. En caso que requiera repasar más sobre lazos, aún se presenta una solución particular, solo para cuatro dígitos.

# 1ra Evaluación II Termino 2006
# Tema 2. Verificador cuenta. Ejercicio Básico
# INGRESO
codigo = int(input('escriba el codigo completo: '))

# PROCEDIMIENTO
escrito = codigo%10
numero = codigo//10

a = numero%10
numero = numero//10

b = numero%10
numero = numero//10

c = numero%10
d = numero//10

suma = a*c+(b+d)
calculado = suma%10

if (escrito == calculado):
    respuesta = 1
else:
    respuesta = 0

# SALIDA
print(respuesta)

s1Eva_IT2004_T2 Verificar ISBN

Propuesta de solución en Python

# Parcial I Término 2004
# Tema 2. ISBN

# INGRESO
ISBN = int(input('cual ISBN: '))

# PROCEDIMIENTO
vescrito = ISBN%10
n = ISBN//10

contador = 9
suma = 0
while (n>0):
    digito = n%10
    n = n//10
    suma =  suma + digito*contador
    contador = contador -1

vcalculado = suma%11

if (vescrito==vcalculado):
    respuesta = 1
else:
    respuesta = 0

#SALIDA
print(respuesta)

s1Eva_IIT2005_T2 Negocio piramidal

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# Parcial II Termino 2005
# Tema 2. Problema piramidal
# Propuesta de solución: edelros@espol.edu.ec

x = int(input('cantidad por depositante:'))
n = int(input('personas en el mercado:'))

mes = 0
invitado = 1
participa = 0

saldo = 0
interespaga = 0
while (interespaga<=saldo):
    deposito = invitado*x
    comision = 0.20*deposito
    interespaga = 0.10*x*participa
    saldo = saldo+deposito-comision-interespaga
    participa = participa+invitado

    if (participa<=(n/2)):
        invitado = participa
    else:
        invitado = 0
    
    mes = mes+1

print('meses con saldo disponible:')
print(mes)

s1Eva_IIT2005_T3 Entrenamiento atleta: promedios

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# Parcial II Término 2005
# Tema 3. Promedio Atleta
# Propuesta de solución. edelros@espol.edu.ec
# Tarea: realizar promedio por semana

import numpy

n = int(input('¿días a cronometrar?: '))

# Inicia tabla de tiempos
tiempo = numpy.zeros((n+1),dtype=int)
dia = 1
while (dia<=n):
    print('tiempo[' + str(dia) + ']: ')
    tiempo[dia]=float(input(''))
    dia = dia+1

# Promedio anual
s = 0
dia = 1
while (dia<=n):
    s = s + tiempo[dia]
    dia = dia+1
pranual = s/n

# Promedio mensual
mes = 1
maxmes = int(n/30)
while (mes<=maxmes):
    s = 0
    dia = 1+30*(mes-1)
    while (dia<=(30*mes)):
        s = s+tiempo[dia]
        dia = dia+1
    prm[mes] = s/30
    mes = mes+1

# SALIDA
print('Promedio anual: ')
print(pranual)
print('Promedio mensual: ')
mes = 1
if maxmes==0:
    print('Meses completos: 0')
while (mes<=maxmes):
    print(prm[mes])
    mes = mes+1

# Se modificó el algoritmo para probar con n de pocos di­as.

s1Eva_IIT2004_T3 Estimar π por Montecarlo

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# Parcial II Término 2004
# Tema3. Calcula Pi Montecarlo
# Propuesta de solución. edelros@espol.edu.ec
# Considera todo el circulo

import random
import math

n = int(input('¿Cuántos puntos?: '))

# PROCEDIMIENTO
k = 0
i = 0
while (i<n):
    x = (random.random()*2)-1
    y = (random.random()*2)-1
    d = math.sqrt(x**2+y**2)

    if (d<=1):
        k = k+1

    i = i+1

z = 4*k/n

# SALIDA
print('Pi estimado es:')
print(z)

s1Eva_IIT2005_T4 Juego escaleras y serpientes

Propuesta de solución en Python:

Versión Lazo: Mientras-Repita

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# Parcial II Termino 2005. Tema 4.
# Juego de Escaleras y Serpientes
# Propuesta de solución: edelros@espol.edu.ec

import random

llegada = 64
fichaa = 0
fichab = 0

turno = 0
while (fichaa<llegada or fichab<llegada):

    # jugador A
    dadoa = int(random.random()*6)+1
    fichaa = fichaa+dadoa
    if (fichaa==4 or fichaa==9 or fichaa==29 or fichaa==34 or fichaa==46):
        fichaa = fichaa+3
    if (fichaa==8 or fichaa==19 or fichaa==38 or fichaa==50 or fichaa==60):
        fichaa = fichaa-3

    #jugador B
    dadob = int(random.random()*6)+1
    fichab = fichab+dadob
    if (fichab==4 or fichab==9 or fichab==29 or fichab==34 or fichab==46):
        fichab = fichab+3
    if (fichab==8 or fichab==19 or fichab==38 or fichab==50 or fichab==60):
        fichab = fichab-3

    turno = turno+1

gana = 0
if fichaa>fichab:
    gana = 1
if fichab>fichaa:
    gana = 2

# SALIDA
print('gana el jugador: ')
print(gana)
print('turnos jugados:')
print(turno)


Versión lazo: Repita-Hasta

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# Parcial II Termino 2005. Tema 4
# Juego de Escaleras y Serpientes
# Propuesta de solución. edelros@espol.edu.ec

import random

llegada = 64
fichaa = 0
fichab = 0

turno=0
while not(fichaa>=llegada or fichab>=llegada):

    # jugador A
    dadoa = int(random.random()*6)+1
    fichaa = fichaa+dadoa
    if (fichaa==4 or fichaa==9 or fichaa==29 or fichaa==34 or fichaa==46):
        fichaa = fichaa+3
    if (fichaa==8 or fichaa==19 or fichaa==38 or fichaa==50 or fichaa==60):
        fichaa = fichaa-3

    #jugador B
    dadob = int(random.random()*6)+1
    fichab = fichab+dadob
    if (fichab==4 or fichab==9 or fichab==29 or fichab==34 or fichab==46):
        fichab = fichab+3
    if (fichab==8 or fichab==19 or fichab==38 or fichab==50 or fichab==60):
        fichab = fichab-3

    turno = turno+1

gana = 0
if fichaa>fichab:
    gana = 1

if fichab>fichaa:
    gana = 2

# SALIDA
print('gana el jugador: ')
print(gana)
print('turnos jugados:')
print(turno)

s1Eva_IIT2005_T4 Juego: escaleras y serpiente

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

Tarea: contiene partes por desarrollar, contiene el esquema principal

# Parcial II Término 2005
# Tema 4. Escaleras y Serpientes
# Tarea: en comentarios
import random as rnd

# INGRESO
# preguntar tamaño de tablero
meta = 64

# PROCEDIMIENTO
A = 0
B = 0

turno = 0
while not(A>meta or B>meta):
    r = turno%2

    if (r==0):
        dado = int(rnd.random()*6)+1
        A = A + dado
        if (A==4 or A==9):
            A = A + 3
        # completar casilla castigo

    if (r>0):
        dado = int(rnd.random()*6)+1
        B = B + dado
        if (B==4 or B==9):
            B = B + 3
        # completar casilla castigo

    turno = turno +1

if (A>B):
    gana = 1
else:
    gana = 2
# implementar empate gana=0

print('casilla final A: ', A)
print('casilla final B: ', B)
print('ganó el jugador: ',gana)

s1Eva_IT2005_T3 Arreglo aleatorio binario a decimal

Propuesta de solución en Python

# 1ra Eva I Término 2005.
# Tema 3. Arreglo aleatorio 2005
# Tarea: contar los 1's, literal a)

import numpy as np
import random as rnd

n = int(input('cuantos componentes n: '))

# PROCEDIMIENTO
B = np.zeros(n,dtype=int)
decimal = 0
i = 0
while (i<n):
    B[i] = int(rnd.random()*2)+0
    # orden de binarios es izquierda a derecha
    posicion = n-1-i  
    decimal = decimal+B[i]*(2**posicion)
    i = i+1

# SALIDA
print('Arreglo de binarios B[i]:')
print(B)
print('equivale en decimal:',decimal)