You are on page 1of 6

INFORME DE FASE

Lab03:
Ejercicio 1
def mayor(s,n,m= 0):
if n == len(s):
n = n-1
m = s[n]
if n == 0 :
if n>m:
return n
else:
return m
else:
if s[n]>m:
return mayor(s,n-1,s[n])
else:
return mayor(s,n-1,m)
s = [12,3,43,4,5,67,45,78,45,45,43]
n = len(s)
print(mayor(s,n))

Ejercicio 2
def buscar(t1,l1,t2,l2):
for i in range(l2):
j=0
while t2[i] == t1[j]:
j+=1
i+=1

if j == l1-1:
return i-j , i
return "NO SE ENCUENTRA"
t1 = "buenas"
t2 = "hola buenas tardes"
l1 = len(t1)
l2 = len(t2)
print(buscar(t1,l1,t2,l2))
Ejercicio 3
def insercion_por_orden(s,n):
for i in range(1,n):
val = s[i]
j= i-1
while j>=0 and val<s[j]:
s[i],s[j]=s[j],val
j = j-1
i = i-1
val = s[i]

s= [5,3,2,4,4,7,5,9,8,56]
insercion_por_orden(s,len(s))
print(s)

Ejercicio 4
import random
def desordena(s,n):
for i in range(n):
r = random.randint(i,n-1)
s[i],s[r]=s[r],s[i]
s = [1,2,3,4,5,6]
desordena(s,len(s))
print(s)

Ejercicio 5
import random
def desordena(s,n):
for i in range(n):
r = random.randint(i,n-1)
s[i],s[r]=s[r],s[i]
return s
s = [1,2,3,4,5,6,4,6,8,6,4,2,3,5,6]
d = []
for i in range(1000):
e= str(desordena(s,len(s)))
if e in d:
print("se encontro despues de ",d.index(e)," intentos")
d.append(e)
print("no se encontraron 2 iguales despues de 1000 intentos")
Ejercicio 6
def seleccion_orden(s):
for i in range(len(s)):
minimo = i
for j in range(i,len(s)):
if s[j]<s[minimo]:
minimo = j
if minimo!= i:
s[i],s[minimo]=s[minimo],s[i]
s = [5,3,5,6,1,8,2,1,7,4]
seleccion_orden(s)
print(s)

Ejercicio 7
import time
import random
def insercion_por_orden(s,n):
for i in range(1,n):
val = s[i]
j= i-1
while j>=0 and val<s[j]:
s[i],s[j]=s[j],val
j = j-1
i = i-1
val = s[i]

def seleccion_orden(s):
for i in range(len(s)):
minimo = i
for j in range(i,len(s)):
if s[j]<s[minimo]:
minimo = j
if minimo!= i:
s[i],s[minimo]=s[minimo],s[i]

def desordena(s,n):
for i in range(n):
r = random.randint(i,n-1)
s[i],s[r]=s[r],s[i]
s = [5,3,5,6,1,8,2,1,7,4]

start = time.time()
for i in range(10000):
seleccion_orden(s)
desordena(s,len(s))
end = time.time()
print(end-start)

s = [5,3,5,6,1,8,2,1,7,4]

start = time.time()
for i in range(10000):
insercion_por_orden(s,len(s))
desordena(s,len(s))
end = time.time()
print(end-start)

Ejercicio 8
def facrec(n):
if n ==1:
return 1
else:
return facrec(n-1)*n
def facnorec(n):
f=1
for i in range(1,n+1):
f = f*i
return f

print(facnorec(4))
print(facrec(4))

Ejercicio 9
def fiborec(n):
if n == 0:
return 0
if n == 1:
return 1
else:
return fiborec(n-1)+fiborec(n-2)
def fibonorec(n):
f1 = 0
f2 = 1
f = 1
for i in range(n-1):
f = f1 +f2
f1 = f2
f2 = f
return f
print(fiborec(20))
print(fibonorec(20))

Ejercicio 10
def robotfibo(n):
if n == 1:
return 1
if n == 2:
return 2
else:
return robotfibo(n-1)+robotfibo(n-2)
print(robotfibo(4))

Ejercicio 11
def robottribo(n):
if n == 1 or n==2:
return n
if n == 3:
return 4
else:
return robottribo(n-1)+robottribo(n-2)+robottribo(n-3)
print(robottribo(4))

Ejercicio 12
def potencia(n,m):
if m == 1:
return n
if m%2==0:
return potencia(n,m/2)*potencia(n,m/2)
else:
return potencia(n,(m-1)/2)*potencia(n,(m-1)/2)*n
print(potencia(2,10))

Ejercicio 13
def sumarec(n,m):
if m == 0:
return n
else:
return sumarec(n,m-1)+1
print(sumarec(2,7))

You might also like