Fookbace¶
Este problema apareció en el certamen 2 del primer semestre de 2011.
La red social Fookbace
almacena la información de sus usuarios en un diccionario.
Las llaves son un código numérico entero asignado a cada usuario, y
los valores son tuplas
con el nombre, la ciudad y la fecha de nacimiento del usuario.
La fecha de nacimiento es una tupla (año, mes, día):
usuarios = {
522514: ('Jean Dupont', 'Marseille', (1989, 11, 21)),
587125: ('Perico Los Palotes', 'Valparaiso', (1990, 4, 12)),
189471: ('Jan Kowalski', 'Krakow', (1994, 4, 22)),
914210: ('Antonio Nobel', 'Valparaiso', (1983, 7, 1)),
# ...
}
Escriba la función
misma_ciudad(u1, u2), que indique si los usuarios con códigosu1yu2viven en la misma ciudad:>>> misma_ciudad(914210, 587125) True >>> misma_ciudad(522514, 189471) False
Escriba la función
diferencia_edad(u1, u2), que retorne la diferencia de edad entre los usuarios cuyos códigos sonu1yu2. (Utilice sólo el año de nacimiento de los usuarios para calcular la diferencia, no el mes ni el día).>>> diferencia_edad(914210, 587125) 7
Para guardar la información sobre cuáles de sus usuarios son amigos entre sí, Fookbace utiliza el conjunto
amistades, que contiene tuplas con los códigos de dos usuarios. Si la tupla(a, b)está dentro del conjunto, significa que los usuarios con códigosaybson amigos. En todas las tuplas se cumple quea<b.amistades = { (198471, 289142), (138555, 429900), (349123, 781118), # ... }
- Escriba la función
obtener_amigos(u), que retorne el conjunto de los códigos de los amigos deu. - Escriba la función
recomendar_amigos(u), que retorne el conjunto de los códigos de los usuarios que cumplen todas estas condiciones a la vez:- son amigos de un amigo de
u, - no son amigos de
u, - viven en la misma ciudad que
u, y - tienen menos de diez años de diferencia con
u.
- son amigos de un amigo de
En ambas funciones, el parámetro
ues el código de un usuario, y el valor de retorno es un conjunto de códigos de usuarios. Recuerde quec.add(x)agrega el valorxal conjuntoc.- Escriba la función