miércoles, 28 de octubre de 2015

Tarea 10 - Dar cambio en python

Tarea 9 - MergeSort y QuickSort

MergeSort en python

def mergeSort(nums):
    print("Separando -> ",nums)
    if len(nums)>1:
        medio = len(nums)//2
        izqmedio = nums[:medio]
        dermedio = nums[medio:]

        mergeSort(izqmedio)
        mergeSort(dermedio)

        i=0
        j=0
        k=0
        while i < len(izqmedio) and j < len(dermedio):
            if izqmedio[i] < dermedio[j]:
                nums[k]=izqmedio[i]
                i=i+1
            else:
                nums[k]=dermedio[j]
                j=j+1
            k=k+1

        while i < len(izqmedio):
            nums[k]=izqmedio[i]
            i=i+1
            k=k+1

        while j < len(dermedio):
            nums[k]=dermedio[j]
            j=j+1
            k=k+1
    print("Combinando -> ",nums)

nums = [34,67,56,2,34,5,6,78,90,9]
print "La lista desordenada es: ",(nums)
mergeSort(nums)


QuickSort en python

def Quicksort(lista,izq,der):
    i=izq
    j=der
    x=lista[(izq + der)/2]
    while( i <= j ):
        while lista[i]<x and j<=der:
            i=i+1
        while x<lista[j] and j>izq:
            j=j-1
        if i<=j:
            aux = lista[i]; lista[i] = lista[j]; lista[j] = aux;
            i=i+1;  j=j-1;
 
        if izq < j:
            Quicksort(lista,izq,j);
    if i < der:
        Quicksort(lista,i,der);
 
def imprimeLista(lista,tam):
    for i in range(0,tam):
        print lista[i]
 
def LeerLista():
    lista=[]
    cn=int(raw_input("Cantidad de numeros a ingresar: "))
    for i in range(0,cn):
        lista.append(int(raw_input("Ingrese numero %d : " % i)))
    return lista
 
A=LeerLista()
Quicksort(A,0,len(A)-1)
imprimeLista(A,len(A))

viernes, 9 de octubre de 2015

Practica 7 - Problema 1

Cifrado Vegenere en python

#Luis Alberto Vargas Torres - Cifrado Vigenere
abc= 'ABCDEFGHIJKLMNÑOPQRSTUVWXYZ'

def Cifrar(cadena, clave):
    texto_cifrar = ''
 
    i=0
    for letra in cadena:
        suma = abc.find(letra) + abc.find(clave[i % len(clave)])
        modulo = int(suma) % len(abc)
        texto_cifrar = texto_cifrar + str(abc[modulo])
        i=i+1
     
    return texto_cifrar
     
c=str(raw_input("Cadena a cifrar: ")).upper()
clave=str(raw_input("Clave: ")).upper()
print Cifrar(c,clave)
 

viernes, 2 de octubre de 2015

Tarea 8 - Los puntos mas cercanos

Los puntos mas cercanos en python

import math
ejex=[]
ejey=[]
NumPun=int(raw_input("Escribe cuantos puntos seran: "))

for i in range(0,NumPun):
    print "Escribe la coordenada x del punto",i+1,
    num=int(raw_input(":"))
    ejex.append(num)
    print "Escribe la coordenada y del punto",i+1,
    num=int(raw_input(":"))
    ejey.append(num)
    
print "\nLas Cordendas de los Puntos son: " 

for i in range(0,NumPun):
    print "(",ejex[i],",",ejey[i],")"    

distmin=10000000
distminx=0
distminy=0
i=0
j=0
while i<NumPun and j<NumPun:
    k=0
    l=0
    while k<NumPun and l<NumPun:
        if ejex[i]==ejex[k] and ejey[j]==ejey[l]:
            k=k+1
            l=l+1
        else:
            dist=math.sqrt((ejex[i]-ejex[k])**2+(ejey[j]-ejey[l])**2)
            if dist<distmin:
                distmin=dist
                distminx=i
                distmink=k
                distminy=j
                distminl=l
        k=k+1
        l=l+1
    i=i+1
    j=j+1
        
print "La distancia mínima es",dist
print "Entre el punto (",ejex[distminx],",",ejey[distminy],") y (",ejex[distmink],",",ejey[distminl],")"

miércoles, 30 de septiembre de 2015

Tarea 7 - Expresiones Regualres

Expresiones Regulares en python

TEXTO=raw_input("Escribe tu expresion regular (abc,cba,...): ")
res='s'
while (res=='s'):
    PATRON=raw_input("Escribe el patron a buscar: ")
    if re.findall(PATRON,TEXTO):
        print "Cadena encontrada"
    else:
        print "Cadena no encontrada"
    res=str(raw_input("Deseas buscar otra palabra (s/n) ? "))
  
Alf=[]
ElemAlf=int(raw_input("Cuantos elementos son de tu alfabeto: "))
for i in range(0,ElemAlf):
    Elem=str(raw_input("Ingresa el elemento de tu alfabeto: "))
    Alf.append(Elem)
print Alf

Pal=raw_input("Escribe palabraa buscar: ")


Practica 6 . Problema 1

Cifrado Cesar en python

#Luis ALberto Vargas Torres - Cifrado Cesar
abc = 'abcdefghijklmnopqrstuvwxyz'
 
def cifrar(cadena, clave):
 
text_cifrado = ''
 
for letra in cadena:
suma = abc.find(letra) + clave
modulo = int(suma) % len(abc)
text_cifrado = text_cifrado + str(abc[modulo])
 
return text_cifrado
 
def decifrar(cadena, clave):
 
text_cifrado = ''
 
for letra in cadena:
suma = abc.find(letra) - clave
modulo = int(suma) % len(abc)
text_cifrado = text_cifrado + str(abc[modulo])
 
return text_cifrado
 
def main():
c = str(raw_input('Cadena a cifrar: ')).lower()
n = int(raw_input('Numero de desplazamientos: '))
print cifrar(c,n)
cc = str(raw_input('Cadena a decifrar: ')).lower()
cn = int(raw_input('Numero de desplazamientos: '))
print decifrar(cc,cn)

main()

lunes, 28 de septiembre de 2015

Tarea 6 - Selection Sort y Bubble Sort

Selection Sort en pyhton 

def selectionSort(nums):
   for i in range(len(nums)-1,0,-1):
       positionOfMax=0
       for location in range(1,i+1):
           if nums[location]>nums[positionOfMax]:
               positionOfMax = location
       temp = nums[i]
       nums[i] = nums[positionOfMax]
       nums[positionOfMax] = temp
nums = [56,3,78,7,23,59,102,54,95,5,9,1,4,34]
print "La lista es: ",nums
selectionSort(nums)
print "\nLa lista ordenada es: ",nums

Bubble Sort en python

def bubbleSort(num):
    for passnum in range(len(num)-1,0,-1):
        for i in range(passnum):
            if num[i]>num[i+1]:
                temp = num[i]
                num[i] = num[i+1]
                num[i+1] = temp

num = [54,201,3,45,26,93,6,89,17,77,31,44,55,9]
print "La lista de numeros es: ",num
bubbleSort(num)
print "La lista ordenada es: ",(num)

Practica 6 - Problema 1

Cifrado cesar en python

#Luis ALberto Vargas Torres - Cifrado Cesar
abc = 'abcdefghijklmnopqrstuvwxyz'

def cifrar(cadena, clave):

text_cifrado = ''

for letra in cadena:
suma = abc.find(letra) + clave
modulo = int(suma) % len(abc)
text_cifrado = text_cifrado + str(abc[modulo])

return text_cifrado

def decifrar(cadena, clave):

text_cifrado = ''

for letra in cadena:
suma = abc.find(letra) - clave
modulo = int(suma) % len(abc)
text_cifrado = text_cifrado + str(abc[modulo])

return text_cifrado

def main():
c = str(raw_input('Cadena a cifrar: ')).lower()
n = int(raw_input('Numero de desplazamientos: '))
print cifrar(c,n)
cc = str(raw_input('Cadena a decifrar: ')).lower()
cn = int(raw_input('Numero de desplazamientos: '))
print decifrar(cc,cn)

main()

miércoles, 23 de septiembre de 2015

Practica 5 - Problema 5

Encontrar todas las sumas de dos enteros positivos de un numero dado (N) recursivamente en python.

#Luis Alberto Vargas Torres
def entPos(n,x,y):
    if y==n:
        return n
    else:
        print n,"=",x,"+",y
        if((x-1)==y)or(x==y):
            return n
        entPos(n,x-1,y+1)
        
#Programa principal
N=int(raw_input("Escribe un número positivo: "))
p=N
q=0
entPos(N,p-1,q+1)

Practica 5 - Problema 4

Contar el numero de palabras en pyhton.

#Luis Alberto Vargas Torres
def fras(Enun):
    if len(Enun)==1:
        return 1
    else:
        return 2

Enun=raw_input("Frases: ")
fra=Enun.split(".")
for i in fra:
    pal=len(i.split(" "))
    print "El numero de palabras son: ",pal

Practica 5 - Problema 3

Invertir las letras de una palabra de forma recursiva en python.

#Luis Alberto Vargas Torres
def invertir(Cad):
    if len(Cad)==1:
        return Cad
    else:
        return Cad[-1]+invertir(Cad[:-1])
   
Cad=raw_input("Escribe la palabra a invertir: ")
print "La inversa de la palabra es: ",invertir(Cad)

Practica 5 - Problema 2

Sumar todos números de 1 hasta n de forma recursiva en python.

#Luis Alberto Vargas Torres
def suma(n):
    if n<=1:
        return n
    else:
        return suma(n-1)+n

x=int(raw_input("Escribe hasta que número deseas la suma: "))
res=suma(x)
print "La suma es: ",res

Practica 5 - Problema 1

Suma números pares en forma recursiva en python.

#Luis Alberto Vargas Torres
def sumapares(n):
    if n<=2:
        return n
    else:
        return sumapares(n-2)+n
   
x=int(raw_input("Escribe hasta que número deseas la suma: "))
res=sumapares(x)
print "La suma es: ",res

sábado, 19 de septiembre de 2015

Tarea 4 - Técnicas de Resolución de Recurrencias

Tarea 3 - Convertir un algoritmo recursivo en iterativo y viceversa

Convertir un algoritmo recursivo en iterativo

1  Analizar el algoritmo recursivo . En este ejemplo , utilizará la solución recursiva para el problema factorial : 
int factorial ( int h ) { 
           if ( h== 0 ) {
                        return 1 ;
           } 
          else { 
                       h de devolución * factorial ( h - 1 ) ;
           } 


2  Decidir si los argumentos de la función se llevará a cabo en variables. En el ejemplo factorial , los resultados de el factorial se pueden almacenar en una variable " total_factorial " para la duración de cualquier iteración . Este ejemplo muestra el algoritmo factorial recursiva y la variable que se utilizará para el argumento recursivo : 
total_factorial int = 0 : 

Determinar una estructura de bucle . En C + + , por ejemplo , el bucle ", mientras que " funciona bien con iteraciones que tienen una longitud indeterminada . " Para " bucles , por otro lado , funciona bien cuando un bucle irá por una duración estricta , representado por un número entero de algún tipo . Para el ejemplo factorial , un bucle "for" va a funcionar bien : 
int factorial = 5 ; total_factorial int = 0 ; 

4  Determinar detener condiciones. Por lo general , como en el ejemplo factorial , la recursión terminará cuando se cumpla una condición . En un bucle interative , como el bucle , es muy útil saber de antemano . Ya sabes que en encontrar el factorial de un número " n " que va a repetir n- 1 veces ( excepto el cero ) , se puede empezar a la una y se extenderán hasta el número factorial : 
for (int i = 1 ; i < = factorial , i + + ) { 
        if ( i == 1 ) { 
                  total_factorial = 1 ;
       } 
       else {
                  totales factorial * = i ;
        }
 } 

Tarea 3 - Tipos de Recursividad

Recursión lineal 

En la recursión lineal cada llamada recursiva genera, como mucho, otra llamada recursiva. Se pueden distinguir dos tipos de recursión lineal atendiendo a cómo se genera resultado.

int factorial(int n)
{
  if (n == 0) return 1;
  else return n*factorial(n-1);
}

Recursión No-Lineal

Alguna llamada recursiva puede generar más de una llamada a la función. Uno de los centros más típicos son los números de Fibonacci, números que reciben el nombre del matemático italiano que los descubrió. Estos números se calculan mediante la fórmula: 

#include <stdio.h>
long fibonacci (int); 
int main() { 
         int n= 30; 
         printf("El %dº número de Fibonacci es %ld\n", n, fibonacci(n)); 
long fibonacci(int n) { 
 if (1 == n || 2 == n) { 
         return 1; 
 } 
else { 
       return (fibonacci(n-1) + fibonacci(n-2)); } 

Recursión a la cola 

En la recursión lineal final el resultado que es devuelto es el resultado de ejecución de la última llamada recursiva. Un ejemplo de este cálculo es el máximo común divisor, que puede hallarse a partir de la fórmula:

#include <stdio.h>
long mcd(long,long);
int main(int argc, char *argv[]){
        long a= 4454,b= 143052;
        printf("El m.c.d. de %ld y %ld es %ld\n",a,b,mcd(a,b));
long mcd(long a, long b){
        if (a==b){ 
                return a;
        }
        else {
                if (a<b){ 
                          return mcd(a,b-a);
                } 
                else{ 
                       return mcd(a-b,b);
                }
}

Recursión Mutua

Implica más de una función que se llaman mutuamente. Un ejemplo es el determinar si un número es par o impar mediante dos funciones:

#include <stdio.h>
long fibonacci (int); 
int main(){ 
        int n= 30; 
        if (par(n)) 
                 printf("El número es par"); 
        else 
                 printf("El número es impar"); 
int par(int n){ 
        if (n==0) 
                 return 1; 
        else 
                 return (impar(n-1)); 
int impar(int n){ 
         if (n==0) 
                 return 0; 
         else 
                 return(par(n-1)); 
}  

martes, 8 de septiembre de 2015

Práctica 4 - Problema 1

Todas las ombinaciones posibles de n-caracteres

#Luis Alberto Vargas Torres

Pal=str(raw_input("Escriba palabra: "))
Aux=[]
for i in range(0,len(Pal)):
    print Pal[i]

import itertools

for i in range (0,len(Pal)):
    Aux.append(Pal)
    
Aux2=list(itertools.product(*Aux))

Aux2=list(set(Aux2))

print Aux2

Practica 3 - Problema 1

Números primos de n-números

#Luis Alberto Vargas Torres

def primo(n):
    if n==2:
        return True
    if n%2==0:
        return False
    i=3
    while (i**2)<=n:
            if n%i==0:
                return False
            i=i+2
    return True

n=int(raw_input("Ingrese un numero: "))
c=2
contador=1
import math
N=math.floor(math.sqrt(n))

while contador<=(1.9*N):
    if primo(c):
        print contador, c
        contador=contador+1
    c=c+1

viernes, 28 de agosto de 2015

Tarea 2 - Gauss y la suma de los n-números

gauss.jpg
Su vida transcurrió a lo largo de los siglos XVIII y XIX. Este matemático ya realizó grandes proezas matemáticas desde que era un crío, como lo puede demostrar la siguiente anécdota muy conocida:
Cuando Gauss estaba en lo que hoy día denominamos educación Primaria, su maestra (o maestro, según otras versiones), cansada de lidiar con aquellos guajes, les mandó la siguiente “diabólica” tarea: sumar todos los números del 1 al 100. Después de proponer la faena, la susodicha se dispuso a pasar el tiempo en otros menesteres “más provechosos” cuando una voz la sacó de su ensimismamiento:
-¡Ya está!
-¡Anda niño, deja de decir tonterías y no me molestes con tus impertinencias!
-Es 5050
encerado.jpgEn esto la docente se quedó sin habla y le preguntó a Gauss, que como todos habéis supuesto acertadamente era el causante del asombro de la maestra, por la forma de su resolución, a lo que “Gaussito” contestó:
-Pues muy fácil, 1 más 100 es igual que 2 más 99, que 3 más 98 y así sucesivamente; como hay 50 de estas sumas y cada una de ellas suma 101, en total tenemos 101 por 50, que es 5050.
Esta suma es igual a ( (n + 1) ( n ) ) /2.

martes, 25 de agosto de 2015

Practica 2 - Problema 3

Calcular la media aritmética, la mediana y la moda de n-números.

A=[]
while True:
    x=int(raw_input("Escriba número: "))
    if(x>0):
        A.append(x)    
    else:
        break

print "\nLa media es: ",sum(A)/len(A)

A.sort()
if len(A) % 2 == 0:
    n= len(A)
    mediana = (A[n/2-1] + A[n/2] ) / 2
else:
    mediana = A[len(A)/2]

print "\nLa mediana es: ",mediana

repet=0
for i in A:
    veces = A.count(i)
    if veces > repet :
        repet = veces
     
modas = []
for i in A:
    veces = A.count(i)
    if veces == repet and i not in modas:
        modas.append(i)

print "\nLa moda es: ", modas

Practica 2 - Problema 2

Calcular la diferencia máxima y la mínima de n-números.

A=[]
n=0
while True:
    x=int(raw_input("Escriba número: "))
    if(x>0):
        A.append(x)
        n=n+1
    else:
        break

Dif=[]
for i in range(0,n):
    for j in range(0,n):
        Dif.append(abs(A[i]-A[j]))
  
Dif.sort()

i=0
for i in range(0,n):
    Dif.remove(0)
    
print "La diferencia menor es: ",min(Dif)
print "La diferencia mayor es: ",max(Dif)

Practica 2 - Problema 1

Encontrar el primer y segundo número mas grande de n-números.

A=[]
i=0
while True:
    x=int(raw_input("Escriba número: "))
    if(x>0):
        A.append(x)
        i=i+1
    else:
        break

PriMay=max(A)
print "El primer numero mayor es: ",PriMay
A.sort()
print "El segundo numero mayor es: ",A[i-2]

martes, 18 de agosto de 2015

Practica 1 - Problema 5

Determinar que tipo de triangulo es dado sus tres lados.

A=int(raw_input("Escribe el lado A del triangulo: "))

B=int(raw_input("Escribe el lado B del triangulo: "))

C=int(raw_input("Escribe el lado C del triangulo: "))

if (A > (B+C) ):

    print "No es un Triangulo"

else:

    if(A**2==(B**2+C**2)):

        print "Es un Triangulo Rectangulo"

    else:

        if ( A**2 > (B**2+C**2) ):

            print "Es un Triangulo Obtusángulo"

        else:

            if( A**2 < (B**2+C**2) ):

                print "Es un Triangulo Acutangulo"

Practica 1 - Problema 4

Encontrar el número mayor y el menor.

list=[ ]

for i in range(0,9):

    number=int(raw_input("Ingrese nuúmero: "))    

    list.append(number)


nummax=max(list)

nummin=min(list)

print "El número máximo es",nummax

print "El número mínimo es",nummin

Practica 1 - Problema 3

Calcular la desviación media de 5 números.

x1=int(raw_input("Escribe el numero 1: "))

x2=int(raw_input("Escribe el numero 2: "))

x3=int(raw_input("Escribe el numero 3: "))

x4=int(raw_input("Escribe el numero 4: "))

x5=int(raw_input("Escribe el numero 5: "))

media=(x1+x2+x3+x4+x5)/5

sumatoria=(x1-media)**2+(x2-media)**2+(x3-media)**2+(x4-media)**2+(x5-media)**2

import math

desviacion=math.sqrt(media)/5

print "La desviacion media es : ",desviacion
     

Practica 1 - Problema 2

Calcular el impuesto x% y la ganancia y% total de un vendedor dado el costo del vehículo, así como calcular el costo total para el comprador.

CostVehi=int(raw_input("Escriba el costo del automovil : "))

GanVen=int(raw_input("Escriba el porcentaje de la ganancia del vendedor : "))

GanVen=CostVehi*(float(GanVen)/100)

Impu=int(raw_input("Escriba el porcentaje del impuesto : "))

Impu=CostVehi*(float(Impu)/100)

CostTot=CostVehi+GanVen+Impu

print "la ganancia del vendedor es: ",GanVen

print "El impuesto es : ",Impu

print "El costo del consumidor pagará : ",CostTot

Practica 1 - Problema 1

Calcular el área de un triangulo.

s1=int(raw_input("Dame el primer lado: "))

s2=int(raw_input("Dame el segundo lado: "))

s3=int(raw_input("Dame el tercer lado: "))

T=(s1+s2+s3)/2

import math

area=math.sqrt(T*(T-s1)*(T-s2)*(T-s3))

print "El Area es; ",area