Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
1. Instrucciones
Para la presente tarea deberán resolver los siguientes problemas:
Las preguntas que puede hacer el detective son de la forma: ¿La persona 1 vio a la persona 2?
Como el detective tiene mucho trabajo como para averiguar quién fue el culpable, le ha pedido a
los alumnos de INF-134 que lo ayuden, realizando un programa que le diga quién es el culpable
en el menor número de preguntas posibles.
1.1.1. Input
Al ejecutar el programa, se ingresará n, que es el número de personas en la fiesta.
Luego, se ingresarán p0 , p1 , . . . , pn−1 , que corresponden a los nombres de las personas.
Finalmente, se deberá ingresar por cada persona pi , un número que indique si ha visto a la
persona pj : se ingresa 1 si la ha visto y 0 si no la ha visto (matriz de dimensiones n × n).
1
1.1.2. Output
El nombre del culpable.
1.1.3. Consideraciones
Deberán utilizar pilas para resolver este problema.
Esta prohibido importar las pilas desde una librerı́a: deberán programarlas y dejarlas en un
archivo aparte (por ejemplo, pilas.cpp).
Siempre hay una persona que dice haber visto a todos y que nadie lo vio (siempre se
encuentra al culpable).
$ ./tarea3-1
3
Seba Hoffman Fabrizio
1 1 1
0 1 0
0 0 1
Seba 2
$
¿Fabrizio vio a Hoffmann en el salón? Según la matriz no lo vio, por lo que Hoffmann podrı́a
ser el asesino, y Fabrizio queda descartado (se asume que el asesino dirá que vio a todos).
¿Hoffmann vio al Seba en el salón? Según la matriz, Hoffmann no vio al Seba en el salón,
por lo que el Seba es un posible culpable y Hoffmann queda descartado.
2
1.2. Fila del almuerzo simulator
Se deberá implementar un simulador de la fila del almuerzo del casino con los siguientes
comandos:
sneaky <persona>: La persona sin ser vista por nadie se pone al principio de la fila.
print: imprime el nombre de todas las personas en la fila en orden (desde el primero en la
fila hasta el último).
son las 2: todas las personas se van a clase, y se termina la ejecución del problema.
1.2.1. Consideraciones
Las entradas siempre serán correctas.
Esta prohibido importar las listas/colas de alguna librerı́a. Si las usarán deberán programarlas
en archivos aparte (por ejemplo, cola.cpp y listas.cpp).
$ ./tarea3-2
entra Fabrizio
entra Hoffmann
entra Horst
entra Juana
sneaky John
se cola Seba con John
print
John
Seba
Fabrizio
3
Hoffmann
Horst
Juana
se va Horst
avanza
avanza
size
3
print
Fabrizio
Hoffmann
Juana
son las 2
$
2. Consideraciones generales
Toda memoria pedida de forma dinámica deberá ser liberada. El no cumplir con esto conlleva
un descuento de 20 puntos.
Para esta tarea, al hacer make se deberán crear 2 ejecutables: tarea3-1 y tarea3-2, los
cuales corresponden a las soluciones de los problemas 1 y 2 respectivamente.
3. Bonus!
+10 si realizan el problema 2 solo con la implementación básica de colas vista en clase.
4. Entrega
La fecha lı́mite de entrega es el Viernes 27 de Abril a las 23:55.
Lea el reglamento y use los formatos de entrega establecidos para evitar descuentos.