SOLUCIÓN DEL PARCIAL, PRIMER PUNTO, una posible solución

Anuncio
SOLUCIÓN DEL PARCIAL,
PRIMER PUNTO, una posible solución haciendo cuatro llamados a la misma función
from list import *
# pre-condicion: longitud(Usuarios)=longitud(tipos)
# Usuarios = una lista de usuarios
# tipos = una lista de un tipos de usuario de celular, tipo (1-4)
# post-condicion: Se devuelve t1 una lista con los usuarios de celular de uno de los tipos (1-4)
# descripcion: clasificar los usuarios de celular según un tipo de usuario
def celu(Usuarios,tipos,t1,x):
if vacia(Usuarios):
return t1
else:
if cab(tipos)==x:
return celu(col(Usuarios),col(tipos),(cons(cab(Usuarios),t1)),x)
else:
return celu(col(Usuarios),col(tipos),t1,x)
# pre-condicion: longitud(Us)=longitud(Tip), Lista de Us = usuarios, lista Tip = tipos
#descripcion: clasificar los usuarios de celular en los cuatro tipos posibles (1-4)
def clasificar(Us,Tip):
return cons(celu(Us,Tip,[],1),cons(celu(Us,Tip,[],2),cons(celu(Us,Tip,[],3),celu(Us,Tip,[],4))))
print clasificar(["Andres","Gustavo","Alejandro","Olga","Fernando","Marco"],[1,2,3,1,4,2])
PRIMER PUNTO, otra posible solución haciendo un sólo llamado a una función
from list import *
# pre-condicion: longitud(Usuarios)=longitud(tipos), listas de los cuatro tipos de usuarios de celular
# post-condicion: Se devuelven los cuatro tipos de usuarios de celular t1,t2,t3,t4(No usan celu)
# descripcion: clasificar los usuarios de celular en cuatro grupos
def celu(Usuarios,tipos,t1,t2,t3,t4):
if vacia(Usuarios):
return [t1,t2,t3,t4]
else:
if cab(tipos)==1:
return celu(col(Usuarios),col(tipos),(cons(cab(Usuarios),t1)),t2,t3,t4)
elif cab(tipos)==2:
return celu(col(Usuarios),col(tipos),t1,(cons(cab(Usuarios),t2)),t3,t4)
elif cab(tipos)==3:
return celu(col(Usuarios),col(tipos),t1,t2,(cons(cab(Usuarios),t3)),t4)
else:
return celu(col(Usuarios),col(tipos),t1,t2,t3,(cons(cab(Usuarios),t4)))
def clasificar(Us,Tip):
return celu(Us,Tip,[],[],[],[])
print clasificar(["Andres","Gustavo","Alejandro","Olga","Fernando","Marco"],[1,2,3,4,4,2])
SEGUNDO PUNTO
from list import *
# pre-condicion: Li = lista de listas
# post-condicion: numero resultado de la sumatoria de todos los numeros pares encontrados
# descripcion: calcular la sumatoria de todos los numeros pares encontrados en una lista de listas
def sumPar(L):
if vacia(L):
return 0
else:
if eslista(cab(L)):
return sumPar(cab(L))+sumPar(col(L))
else:
if (cab(L)%2==0):
return (cab(L)+sumPar(col(L)))
else:
return sumPar(col(L))
print sumPar([1,2,[3,2],1,2,[1,4,[4,2,[]]]])
TERCER PUNTO
from list import *
#pre: Cada elemento de M es una lista
# de dos elementos.
def piiz(M,F,S):
if vacia(M):
return[F,S]
else:
return piiz(col(M),cons(cab(cab(M)),F),cons(cab(col(cab(M))),S))
def pz(M):
return piiz(M,[],[])
print pz([[1,11],[2,22],[3,33],[4,44],[5,55]])
Salida después de ejecución
>>>
[[5, 4, 3, 2, 1], [55, 44, 33, 22, 11]]
Esta función intercala los elementos
M [[elemento-1, elemento-2], [elemento-1, elemento-2], [elemento-1, elemento-2], [elemento-1, elemento-2]]
en dos listas,
Devuelve una lista con dos Sub-listas que contienen :
Primera Lista = lista formada por elementos-1 de la pareja inicial
Segunda Lista = lista formada por elementos-2 de la pareja inicial
Descargar