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