Tarea3 1
Tarea3 1
Tarea3 1
TAREA 3
BUSCANDO PERSONAS EN ÁRBOLES
GENEALÓGICOS
Equipo de Programación 1
Universidad de Ingeniería y Tecnología
July 6, 2021
1
Programación 1 Tarea 3
Contents
1 Indicaciones generales 3
2 Gradescope 3
3 Introducción 4
4 Resolver la tarea 5
4.1 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.2 Ejercicio 1: Leer el archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3 Ejercicio 2: Personas por países . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.4 Ejercicio 3: Encuentra las conexiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Programación 1 Tarea 3
1. Indicaciones generales
Esta tarea involucra 3 problemas diferentes relacionados a un solo caso. El objetivo es lograr resolver
todos los problemas utilizando su conocimiento en Python. Los principales temas a abordar son:
• Manejo de archivos
• Uso de diccionarios
• Recuerda que la tarea es individual, las copias serán sancionadas con nota 0 final en la asignatura.
• Revisa bien lo que entregas → Están permitidos intentos ilimitados pero la versión final a corregir
será la última que hayas subido.
• Si tienes dudas revisa primero las Q& A, las pueden encontrar en Discord y en Notion.
2. Gradescope
Subir únicamente el archivo solution.py (sin comprimir).
• Cada caso que tiene varios casos de prueba. Para obtener la nota completa en una pregunta, tus
algoritmos tienen que retornar la respuesta correcta en todos los casos de prueba.
• Si un caso de prueba falla, aparecerá un mensaje de error con sugerencias. Revisa tu código e
inténtalo de nuevo.
• La fecha final de entrega es el 17 de julio a las 23:59 P.M. No esperes hasta última hora, pues
el sistema se cierra automáticamente a esa hora. No se aceptarán entregas atrasadas ni entregadas
por otros medios.
Programación 1 Tarea 3
3. Introducción
Los árboles genealógicos son típicamente utilizados para representar las relaciones parentales entre los
miembros de una familia, de forma gráfica. Con esta representación es sencillo ordenar a los miembros de
una familia por generaciones, siendo cada fila horizontal en el árbol una generación distinta empezando
desde la cima del árbol con la primera generación. A continuación se muestra un ejemplo de un árbol
genealógico:
4. Resolver la tarea
4.1 Data
La data de la tarea es un árbol genealógico almacenado en una tabla, que deberá ser leída a partir de
un archivo CSV, donde cada fila representa a una persona.
1 {
2 " A01 " : {
3 " first_name " : " Veronika " ,
4 " last_name " : " Mc Corley " ,
5 " country " : " Italy " ,
6 " mom " : " " ,
7 " dad " : " " ,
8 " bestie " : " C01 "
9 },
10 " A02 " : {
11 ...
12 },
13 ...
14 }
Programación 1 Tarea 3
5 return paises
Ejemplos
Para los siguientes ejemplos se usa la tabla de datos de ejemplo en la sección 4.1
Ejemplo1:
1 >>> Solution () . ejercicio2 ()
2 { " Italy " : 3 , " Peru " :3 , " Spain " :3}
6 return conexiones , p e rs on a _b u sc ad a
Donde:
– id: en un string con el identificador de la persona de la cual queremos encontrar sus conexiones.
– camino: es un string con la secuencia de caracteres que nos llevarán a la persona que queremos
encontrar. Los únicos posibles valores de los caracteres en camino son:
∗ M: Representa a la mamá (Mom).
∗ D: Representa al papá (Dad).
∗ B: Representa al mejor amigo (Bestie).
Algunas especificaciones
• En caso que el camino no permita encontrar una persona en el árbol genealógico, entonces deberás
retornar las conexiones existentes y un diccionario vacío.
• La lista de conexiones a retornar debe incluir el id de la persona de la cual queremos encontrar sus
conexiones.
Ejemplos
Para los siguientes ejemplos se usa la tabla de datos de ejemplo en la sección 4.1
Ejemplo1:
1 >>> Solution () . ejercicio3 ( " C02 " , " MBDD " )
2 [ " B03 " , " C01 " , " B02 " , " A01 " ] , { " first_name " : " Veronika " , " last_name " : " Mc Corley " , "
country " : " Italy " , " mom " : " " , " dad " : " " , " bestie " : " C01 " }
O en otras palabras, se busca al padre del padre del mejor amigo de la madre de C02
Ejemplo 2:
1 >>> Solution () . ejercicio3 ( " B02 " , " BDMDM " )
2 [ " C03 " , " B03 " , " A01 " ] , {}
3
Programación 1 Tarea 3
• D El padre (dad) de "A01" → No tiene padre, por lo que se retornará las conexiones hasta este
momento y un diccionario vacío