Categoría: Solución 2da Evaluación

  • s2Eva_IIT2001_T2 Contar puntos aleatorios en un triángulo

    Ejercicio: 2Eva_IIT2001_T2 Contar puntos aleatorios en un triángulo

    Se cuentan los puntos que caen el el área marcada en verde que se encuentra debajo de:

    f(x)= -x+10

    siendo el intervalo [a,b] con valores de a = 0 y b=10, la mitad corresponde a  (a+b)/2

    Como las áreas consideradas corresponden a dos sectores, considere usar x entre[a,mitad] y entre [mitad, b], limitados en y por la línea f(x)

    Un resultado gráfico, no requerido para el ejercicio, tan solo para mejor comprensión:

    de n puntos:  100
     dentro estaban:  25
    >>> 
    

    Algoritmo en Python

    # 2Eva_IIT2001_T2 Contar puntos aleatorios 
    # dentro de área triángular
    import random as rnd
    import numpy as np
    import matplotlib.pyplot as plt
    
    # INGRESO
    n = 100
    a = 0
    b = 10
    
    # función a evaluar
    f = lambda x: -x+10
    
    # PROCEDIMIENTO
    mitad = (a+b)/2
    X = []
    Y =[]
    dentro = 0
    i = 0
    while not(i>=n):
        xi = rnd.random()*(b-a)+0
        yi = rnd.random()*(b-a)+0
        limite = f(xi)
        if xi>mitad and yi<=limite:
            dentro = dentro +1
        if xi<=mitad and yi<=limite and yi>=mitad:
            dentro = dentro +1
        X.append(xi)
        Y.append(yi)
        i = i+1
    
    # SALIDA
    print(' de n puntos: ', n)
    print(' dentro estaban: ', dentro)
    
    
    # Grafica
    plt.scatter(X,Y)
    xi = np.linspace(a,b,n+1)
    plt.plot(xi,f(xi))
    plt.axhline(mitad)
    plt.axvline(mitad)
    plt.xlim(a,b)
    plt.ylim(a,b)
    plt.xlabel('xi')
    plt.ylabel('yi')
    plt.show()
    
  • s2Eva_IIT2013_T2 Verificar secuencia ADN

    Ejercicio: 2Eva_IIT2013_T2 Verificar secuencia ADN

    Algoritmo en Python

    # ICM00794-Fundamentos de Computación - FCNM-ESPOL
    # 2Eva_IIT2013_T2 Verificar secuencia ADN
    # propuesta: edelros@espol.edu.ec
    
    def ordenados(cadena):
        n = len(cadena)
        cadena  = cadena.upper()
        validos = 'ACGT'
        pares   = 0
    
        # solo hasta penúltimo
        i = 0
        while not(i>=(n-1)): 
            elemento  = cadena[i]
            elemento2 = cadena[i+1]
            if (elemento<=elemento2):
                pares = pares + 1
            i = i + 1
            
        # validar elementos en cadena
        noADN = 0
        i = 0
        while not(i>=n):
            elemento = cadena[i]
            if not(elemento in validos):
                noADN = noADN - 1
            i = i + 1
    
        # corrige de ser necesario
        if (noADN<0): 
            pares = noADN
            
        return(pares)
    

    Ejemplo

    >>> cadena='CCGAATCGTA'
    >>> ordenados(cadena)
    6
    >>> cadena='CBGAATCGWA'
    >>> ordenados(cadena)
    -2