EXAMEN DE LA PRCTICA DE PRO2 Cuatrimestre de primavera 2014 - JUEGO DE PRUEBAS PBLICO

Esquema del documento:

0. Observaciones previas.
1. Composicin de los juegos de pruebas.
2. Entrada y salida de las operaciones.
3. Juego de pruebas pblico.

-----------------------------------------------------------------------------
0. OBSERVACIONES PREVIAS
-----------------------------------------------------------------------------

* Para cada ejecucin, el nmero de inicial de organismos (N, entero mayor que
  1), y el nmero mximo de organismos (M, entero mayor que N), se leen como
  datos de inicializacin y no cambian a lo largo de la ejecucin.

* En general, los datos de operaciones diferentes se leern en lneas
  diferentes y los resultados de operaciones diferentes se escribirn en lneas
  diferentes.

* Los ficheros de entrada de los juegos de pruebas tendrn lneas de menos de
  80 caracteres. Si necesitamos datos muy grandes para una misma operacin, los
  dividiremos en varias lneas.

* No es necesario comprobar si los datos que se van a leer son consistentes,
  por ejemplo, si se dice que hay N organismos, se leern N organismos, ni uno
  ms ni uno menos.
  
* A partir del juego de pruebas incluido al final de este documento no se deben
  extrapolar propiedades de los datos que no se describan explcitamente.

-------------------------------------------------------------------------------
  1. COMPOSICIN DE LOS JUEGOS DE PRUEBAS
-------------------------------------------------------------------------------

La primera accin es leer los nmeros N y M. A continuacin se lee la
estructura de los N organismos iniciales. sta sigue el formato estndar de
lectura de un rbol en preorden que se ha visto en la sesiones de laboratorio.
La marca de rbol vaco ser el int 0. Todos los organismos ledos estn vivos.

A partir de este momento, pasamos a aplicar las distintas operaciones, cuya
estructura viene especificada en la siguiente seccin.

-------------------------------------------------------------------------------
2. ENTRADA Y SALIDA DE LAS OPERACIONES
-------------------------------------------------------------------------------

* MUERTE DE ORGANISMOS

Cdigo de operacin: -2

Datos: Un entero L entre 1 y M. Despus L enteros distintos entre 1 y M, que
corresponden a los identificadores de L organismos, algunos de los cuales
podran no existir y otros podran estar muertos.

Salida: Ninguna.

Efectos sobre el sistema: Los organismos correspondientes que existan y que
estn vivos mueren. El resto de organismos no sufren cambio alguno. Se
actualiza el ranking de forma que los organismos queden ordenados teniendo en
cuenta el nmero de hijos vivos de cada organismo.

* EMPAREJAMIENTO

Cdigo de operacin: -3

Datos: Dos enteros I1 e I2 entre 1 y M tales que I1 < I2 que corresponden a
los identificadores de dos organismos. Alguno de estos organismos (o los dos)
puede no existir o estar muerto.

Salida: Si los organismos cuyos identificadores son I1 e I2 existen, estaban
vivos y no se haban emparejado previamente, se escribe el identificador del
hijo que han generado. En otro caso, se indica que no han producido nada.

Efectos sobre el sistema: Si los organismos cuyos identificadores son I1 e I2
existen, estaban vivos y no se haban emparejado previamente, se aade al
experimento el organismo generado en el emparejamiento y se actualiza el
ranking de manera que incluya dicho organismo y lo cuente como hijo de I1 e
I2. Si no se ha generado ningn hijo, no se produce ningn cambio.

* RANKING

Cdigo de operacin: -4

Datos: Ninguno

Salida: Para cada organismo que exista (vivo o muerto), escribe el nmero de
hijos vivos que tiene en este momento.

En primer lugar, se escribe la informacin del organismo que ms hijos vivos
tenga y se contina en orden decreciente respecto al nmero de hijos vivos. En
caso de empate, ste se deshace por orden creciente de identificador.

Efectos sobre el sistema: Ninguno.

* CONSULTA DE ORGANISMOS

Cdigo de operacin: -5

Datos: Un entero L entre 1 y M. Despus L enteros distintos entre 1 y M, que
corresponden a los identificadores de L organismos, algunos de los cuales
podran no existir y otros podran estar muertos.

Salida: Se escribe la estructura de los organismos correspondientes que
existan, incluso los muertos.

Efectos sobre el sistema: Ninguno.

-------------------------------------------------------------------------------
3. JUEGO DE PRUEBAS PBLICO
-------------------------------------------------------------------------------

Entrada comentada:
------------------

4       // N : nmero inicial de organismos 
13      // M : nmero mximo de organismos

// Estructura de los N organismos iniciales: rboles en preorden, com marca 0
// Para cada clula se lee un identificador; todas las clulas de un mismo 
// organismo tienen identificadores distintos y mayores que 0, pero un mismo 
// id. de clula puede aparecer en varios organismos.  
// En la entrada no aparecen los identificadores de los organismos: simplemente
// se lee la estructura de cada organismo por orden de identificador 
// correlativo a partir del primer organismo.
    
// Organismo 1:
1 2 3  0 0 4  5  0 0 6  0 0 7  8  0 0 0

// Organismo 2:
1  2  0 3  0 0 4  5  6  0 0 7  0 0 8  0 0 

// Organismo 3:
1  2  3  0 0 4  0 0 5  6  0 0 7  0 0

// Organismo 4:
1  0 2  0 3  4  5  0 0 6  0 0 7  8  0 0 9  0 0 

-5 5 1 2 3 4 5  // Escribimos la estructura de cinco organismos: el de id 1,
                // el de id 2, etc.; ntese que el organismo 5 todava no existe

-3 1 2          // Se realiza el emparejamiento de 1 y 2

-3 3 4          // Se realiza el emparejamiento de 3 y 4

-5 2 5 6        // Se escribe la estructura de los organismos con id 5 y 6  
                // (que ya existen, producto de emparejamientos anteriores)

-4              // Se consulta el ranking

-3 1 3 

-5 1 7

-4

-2 2 10 4       // Se aplica la operacin muerte a dos organismos (4 y 10);
                // el 10 no existe y no se modifica. El 4 no tiene padres.

-5 2 10 4       // El organismo 4 existe aunque est muerto, pero el 10 no.

-3 2 10         // Emparejamiento 2 y 10, no genera hijo porque 10 no existe
-3 2 3

-5 2 7 8

-4

-2 1 7    // Se aplica la operacin muerte al organismo 7, que tiene 
          // padres, porque proviene de un emparejamiento.

-3 3 4    // Emparejamiento de 3 y 4, ya se haban emparejado anteriormente
-3 5 6
 
-5 4 7 8 9 10 

-4

-5 2 3 4

-3 3 7           // Emparejamiento de 3 y 7, pero 7 est muerto

-6               // Final manual del experimento. 



Salida comentada:
------------------

ORGANISMOS        

// Operacin -5 : Se escribe la estructura de los organismos solicitados.
// La estructura de los organismos se escribe en inorden. De cada clula
// se escribe el identificador.
// Ntese que tambin se escriben los subrboles vacos (0).
1 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 
2 : 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
3 : 0 3 0 2 0 4 0 1 0 6 0 5 0 7 0 
4 : 0 1 0 2 0 5 0 4 0 6 0 3 0 8 0 7 0 9 0 

// El organismo 5 no existe todava y por tanto no se escribe nada

EMPAREJAMIENTO

// Operacin -3. Slo se escribe el identificador del organismo generado.
// Si se quieren consultar dicho organismo hay que usar la op -5.

1 y 2 han producido 5

EMPAREJAMIENTO
3 y 4 han producido 6

ORGANISMOS
5 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 11 0 
6 : 0 3 0 2 0 4 0 1 0 6 0 5 0 9 0 8 0 10 0 7 0 12 0 11 0 13 0 

RANKING   

// Operacin -4

// Los organismos se escriben en orden descendente por nmero de hijos y en 
// caso de empate en orden ascendente por id; para cada organismo se escribe 
// el nmero de hijos vivos que tiene en este momento. 

1 :1   // El organismo 1 tiene 1 hijo vivo 
2 :1   // El organismo 2 tiene 1 hijo vivo 
3 :1   // ...
4 :1
5 :0
6 :0 

// Los organismos existentes que no se han reproducido o que tengan todos sus 
// hijos muertos tambin se escriben. Si hubiera organismos muertos, su nmero 
// de hijos vivos tambin se escribira.


EMPAREJAMIENTO
1 y 3 han producido 7

ORGANISMOS
7 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 9 0 

RANKING
1 :2
3 :2
2 :1
4 :1
5 :0
6 :0
7 :0


ORGANISMOS
4 : 0     // El 4 es un organismo muerto

EMPAREJAMIENTO
2 y 10 no han producido nada  // El organismo 10 no existe

EMPAREJAMIENTO
2 y 3 han producido 8

ORGANISMOS
7 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 9 0 
8 : 0 9 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 

RANKING
3 :3
1 :2
2 :2
4 :1
5 :0
6 :0
7 :0
8 :0


EMPAREJAMIENTO
3 y 4 no han producido nada  // 3 y 4 se haban emparejado anteriormente

EMPAREJAMIENTO
5 y 6 han producido 9

ORGANISMOS
7 : 0 
8 : 0 9 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
9 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 13 0 12 0 14 0 11 0 16 0 15 0 17 0 

RANKING
2 :2
3 :2
1 :1
4 :1
5 :1
6 :1
7 :0
8 :0
9 :0


ORGANISMOS
3 : 0 3 0 2 0 4 0 1 0 6 0 5 0 7 0 
4 : 0 

EMPAREJAMIENTO
// 7 es un organismo muerto, por tanto 3 y 7 no pueden reproducirse

3 y 7 no han producido nada

FIN   // Se escribe FIN al acabar el experimento


// Se escriben todos los organismos ledos o generados durante el experimento 
// en orden creciente de identificador. 

ORGANISMOS
1 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 
2 : 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
3 : 0 3 0 2 0 4 0 1 0 6 0 5 0 7 0 
4 : 0 
5 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 11 0 
6 : 0 3 0 2 0 4 0 1 0 6 0 5 0 9 0 8 0 10 0 7 0 12 0 11 0 13 0 
7 : 0 
8 : 0 9 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
9 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 13 0 12 0 14 0 11 0 16 0 15 0 17 0 

// Se escribe el ranking con el mismo formato utilizado durante el experimento.

RANKING
2 :2
3 :2
1 :1
4 :1
5 :1
6 :1
7 :0
8 :0
9 :0

-------------------------------------------------------------------------------

Entrada sin comentar: cortadla y pegadla en un fichero para usarla como entrada
de vuestro programa mediante la redireccin <.

-------------------------------------------------------------------------------

4 
13 

1 2 3  0 0 4  5  0 0 6  0 0 7  8  0 0 0

1  2  0 3  0 0 4  5  6  0 0 7  0 0 8  0 0 

1  2  3  0 0 4  0 0 5  6  0 0 7  0 0

1  0 2  0 3  4  5  0 0 6  0 0 7  8  0 0  9  0 0 

-5 5 1 2 3 4 5  

-3 1 2          

-3 3 4          

-5 2 5 6          

-4 

-3 1 3 

-5 1 7

-4

-2 2 10 4  
           
-5 2 10 4       

-3 2 10
-3 2 3

-5 2 7 8

-4

-2 1 7

-3 3 4
-3 5 6 

-5 4 7 8 9 10 

-4

-5 2 3 4

-3 3 7

-6   

-------------------------------------------------------------------------------

Salida sin comentar: vuestro resultado ha de coincidir exactamente con ste
(comparndolos con el comando diff -Bb de Linux), salvo acaso las lneas en
blanco del final.

------------------------------------------------------------------------------

ORGANISMOS
1 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 
2 : 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
3 : 0 3 0 2 0 4 0 1 0 6 0 5 0 7 0 
4 : 0 1 0 2 0 5 0 4 0 6 0 3 0 8 0 7 0 9 0 

EMPAREJAMIENTO
1 y 2 han producido 5

EMPAREJAMIENTO
3 y 4 han producido 6

ORGANISMOS
5 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 11 0 
6 : 0 3 0 2 0 4 0 1 0 6 0 5 0 9 0 8 0 10 0 7 0 12 0 11 0 13 0 

RANKING
1 :1
2 :1
3 :1
4 :1
5 :0
6 :0


EMPAREJAMIENTO
1 y 3 han producido 7

ORGANISMOS
7 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 9 0 

RANKING
1 :2
3 :2
2 :1
4 :1
5 :0
6 :0
7 :0


ORGANISMOS
4 : 0 

EMPAREJAMIENTO
2 y 10 no han producido nada

EMPAREJAMIENTO
2 y 3 han producido 8

ORGANISMOS
7 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 9 0 
8 : 0 9 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 

RANKING
3 :3
1 :2
2 :2
4 :1
5 :0
6 :0
7 :0
8 :0


EMPAREJAMIENTO
3 y 4 no han producido nada

EMPAREJAMIENTO
5 y 6 han producido 9

ORGANISMOS
7 : 0 
8 : 0 9 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
9 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 13 0 12 0 14 0 11 0 16 0 15 0 17 0 

RANKING
2 :2
3 :2
1 :1
4 :1
5 :1
6 :1
7 :0
8 :0
9 :0


ORGANISMOS
3 : 0 3 0 2 0 4 0 1 0 6 0 5 0 7 0 
4 : 0 

EMPAREJAMIENTO
3 y 7 no han producido nada

FIN


ORGANISMOS
1 : 0 3 0 2 0 5 0 4 0 6 0 1 0 8 0 7 0 
2 : 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
3 : 0 3 0 2 0 4 0 1 0 6 0 5 0 7 0 
4 : 0 
5 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 11 0 
6 : 0 3 0 2 0 4 0 1 0 6 0 5 0 9 0 8 0 10 0 7 0 12 0 11 0 13 0 
7 : 0 
8 : 0 9 0 2 0 3 0 1 0 6 0 5 0 7 0 4 0 8 0 
9 : 0 3 0 2 0 5 0 4 0 6 0 1 0 9 0 8 0 10 0 7 0 13 0 12 0 14 0 11 0 16 0 15 0 17 0 

RANKING
2 :2
3 :2
1 :1
4 :1
5 :1
6 :1
7 :0
8 :0
9 :0


-------------------------------------------------------------------------------
