Programaci´on—Certamen 2 (CC) - Lunes 21 de Diciembre de 2015 Nombre:
1.
Rol:
[20 %] Realice el ruteo de los siguientes programas e indique qu´ que´ es lo que imprimen. Cada vez que el valor de una variable cambie, escr´ıbalo ıbalo en una nueva fila de la tabla. Recuerde que si una variable es de tipo string, debe colocar su valor entre comillas simples ’ ’. Si una variable almacena una funcion, ´ coloque el nombre de esta e´ sta como valor (sin comillas). Importante: La tabla tiene suficientes filas. def f1(datos): for i in range(1, len(datos)): j = i while j > 0 and datos[j datos[j] ] < datos[jdatos[j-1]: 1]: temp te mp = da datos tos[j [j] ] datos[j] datos[j] = datos[j datos[j-1] -1] datos da tos[j[j-1] 1] = te temp mp j -= 1 return datos
lista = [4, 3, 6, 1] lista lista = f1 f1(li (lista sta) )
print lista[::-1]
global lista
f1 datos
i
j
temp
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Programaci´on—Certamen 2 (CC) - Lunes 21 de Diciembre de 2015 Nombre:
2.
Rol:
[40 %] Santa Claus ha comprado un sistema hecho en Python para administrar la Navidad 2015. Basicamente, a´ sicamente, el sistema maneja una lista de tuplas, donde cada tupla corresponde corresponde a los registros registros de una persona con el formato (nomb (nombre, re, (x, y), tipo) tipo), donde (x, (x, y) son las coordenadas en el mapa de la ubicaci´ ubicacion ´ de la persona y tipo indicaba como se ha portado la persona ( 'B': Bueno; 'M' : Malo). Ver ejemplo: pers pe rson onas as = [('Erick (12.9887, 7, 1.5567), 1.5567), 'M'), ('Cesar 'Erick Lopez' Lopez', (12.988 'Cesar Moltedo' Moltedo', (12.1986, (12.1986, 2.5321), 'M'), ('Andrew (-2.9001, , 7.6453), 7.6453), 'M'), (' 'Andrew Ng', (-2.9001
Zafradaa' , (12.231 (12.2316, 6, 5.0089), 5.0089), 'B'), # ... ]
Nota: Asuma que cada nombre aparece solo o´ lo una vez.
Ahora usted debe: ´ persona_mas_cer a) Desarrolle la funci´ funcion persona_mas_cerca(perso ca(personas, nas, posicion) posicion) que reciba la lista personas y la posicion ´ actual (posicion ) de Santa Claus. La funcion o´ n debe retornar el nombre de la persona mas a´ s cercana a la posici on ´ de Santa Claus. Para calcular esta distancia recuerde que, en R2 , si se tiene un punto ( x1 , y1 ) y un punto ( x2 , y2 ), entonces la distancia entre los dos puntos viene dada por ( x2 − x1 )2 + ( y2 − y1 )2 >>> persona_mas_cerc persona_mas_cerca(perso a(personas, nas, (12.9676, (12.9676, 1.4991)) 'Erick 'Erick Lopez' Lopez'
Claus ha determinado que la mejor ruta para repartir repartir todos los regalos regalos es ir siempre a la b) Santa Claus persona m´ mas a´ s cercana (con cuidado de no repetirlas) desde la posici´ posicion o´ n en la que se encuentra. Usted debe crear la funci´ funcion o´ n mejor_ruta( mejor_ruta(personas personas, , posicion) posicion) que reciba la lista personas y la posicion ´ inicial de Santa Claus, y retorne una lista con la ruta a seguir identificada por el nombre de las personas. Nota: No altere la lista original de personas. >>> mejor_ru mejor_ruta(p ta(perso ersonas, nas, (0.0, (0.0, 0.0)) 0.0)) ['Andrew ['Andrew Ng', 'Zafrada 'Zafradaa', a', 'Cesar 'Cesar Moltedo' Moltedo', , 'Erick 'Erick Lopez'] Lopez']
pocoss d´ d´ıas ıas de la Navidad, Santa Claus se ha dado cuenta que la lista con personas posee c) A poco errores ya que el coordinador de programacion o´ n no puede ser una persona mala. Gracias a esta observaci´ observacion, o´ n, Santa concluyo´ que el Grinch hab´ hab´ıa ıa hackeado el sistema alterando el campo tipo de algunas personas, es decir, una persona buena fue cambiada a mala o vise-versa. Por suerte Santa tiene un respaldo, una lista con el nombre y el tipo de cada persona. Ver ejemplo: 'Cesar Moltedo Moltedo' ', 'B'), ('Zafradaa' , 'B'), ('Andrew 'Andrew Ng', 'B resp re spal aldo do = [('Cesar '), ('Erick 'Erick Lopez' Lopez', 'M')]
Ahora usted debe implementar una funcion ´ restaurar(p restaurar(personas, ersonas, respaldo) respaldo) que reciba como parametro a´ metro las listas personas y respaldo. La funcion ´ debe restaurar la lista personas, es decir, volver el tipo de cada persona (seg´un respaldo). La funci´on retorna None. >>> restaurar(person restaurar(personas, as, respaldo) respaldo) >>> print print person personas as [('Erick [('Erick Lopez', Lopez', (12.9887 (12.9887, , 1.5567), 1.5567), 'M'), 'M'), ('Cesar ('Cesar Moltedo' Moltedo', , (12.1986 (12.1986, , 2.532 2. 5321), 1), 'B'), 'B'), ('Andr ('Andrew ew Ng Ng', ', ((-2.9 2.900 001, 1, 7.645 7.6453), 3), 'B'), 'B'), (12.2316 (12.2316, , 5.0089), 5.0089), 'B')] 'B')]
('Zaf (' Zafrad radaa aa', ',
Trusted by over 1 million members
Try Scribd FREE for 30 days to access over 125 million titles without ads or interruptions! Start Free Trial Cancel Anytime.
Programaci´on—Certamen 2 (CC) - Lunes 21 de Diciembre de 2015 Nombre:
3.
Rol:
[40 %] La plataforma de citas en l´ l´ınea ınea MatchMaker ha decidido contratarlo para ayudarles en el analisis a´ lisis de su base de datos. Por suerte, la base de datos corresponde a una lista de diccionarios de python como el siguiente: Match MatchMak Maker er = [
'Sheldon Cooper', 'sexo': 'M', 'pasatiempos': {'Sheldon' , ' {'nombre' : 'Sheldon ciencia' , 'fisica', 'trenes'}}, {'nombre' : 'Leonard 'Leonard Hofsadter' Hofsadter', 'sexo': 'M', 'pasatiempos': {'fisica' ,
'comics' }}, 'Howard Wolowitz' Wolowitz', 'sexo': 'M', 'pasatiempos': {'ingenieria' {'nombre' : 'Howard , 'comics'}}, Koothrappali', 'sexo' :'M', 'pasatiempos' : {'astronomia {'nombre' : 'Raj Koothrappali' ', 'comics'}}, {'nombre' : 'Penny', 'sexo':'F', 'pasatiempos' : {'ciencia' , 'peliculas' , 'compras' }}, 'Bernadette Rostenkowski' Rostenkowski', 'sexo': 'F', 'pasatiempos': {' {'nombre' : 'Bernadette biologia' , 'compras'}}, 'Amy Farrah Farrah Fowler' Fowler', 'sexo': 'F', 'pasatiempos': {'ciencia' , {'nombre' : 'Amy 'fisica' , 'biologia', 'Sheldon'}}, # ... ]
Obviamente, la base de datos real tiene muchos m as a´ s datos. Sin embargo, puede asumir que cada nombre es unico ´ en la base de datos. Se le pide crear funciones para cumplir con los siguientes requerimientos: funci´on o´ n posicion(Mat ´ (´ındice) ındice) en la a) Escriba la funci posicion(MatchMaker chMaker, , nombre) que indique la posici on base de datos de la persona nombre. Si el nombre no existe, retornar None. >>> posicion(MatchMa posicion(MatchMaker, ker, 'Leonard Hofsadter') 1 >>> posicion(MatchMa posicion(MatchMaker, ker, 'Penny') 4 >>> print print posicion posicion(Mat (MatchMa chMaker, ker, 'Barney 'Barney Stinson' Stinson') ) None
funcion ´ cantidad_pasatiempos(MatchMaker) que regrese un diccionario con el b) Escribe la funci´ numero ´ de personas por cada pasatiempo que existen en la base de datos. >>> cantidad_pasatie cantidad_pasatiempos(Ma mpos(MatchMaker tchMaker) ) {'She {'Sheldo ldon' n': : 2, 'p 'peli elicu culas las': ': 1, 'comic 'comics' s': : 3, 'fisic 'fisica' a': : 3, 'c 'com ompra pras': s': 2, 'astr 'a strono onomi mia': a': 1, 't 'tren renes' es': : 1, 'i 'inge ngenie nieri ria': a': 1, 'b 'biol iologi ogia' a': : 2, ' ciencia' ciencia': : 3}
funci´on ´ pareja_mas_afin(MatchMaker) que regrese el par de personas, de sexo c) Escriba la funci opuesto, que m´ mas a´ s pasatiempos en com un ´ tengan. En caso de empate, regrese cualquiera de las parejas empatadas. Si no hay parejas afines, la funci on o´ n retorna None. >>> pareja_mas_afin( pareja_mas_afin(MatchMa MatchMaker) ker) ('Sheldo ('Sheldon n Cooper', Cooper', 'Amy 'Amy Farrah Farrah Fowler') Fowler')