Este problema permite hacer entregas de prueba de la práctica completa. Tened en cuenta que:
no es el canal para hacer la entrega definitiva de la práctica
el problema del Jutge de la entrega definitiva puede contener elementos o condiciones diferentes de los que aparecen en este problema
las entregas realizadas en este problema no serán tenidas en cuenta para la nota de la práctica
en esta entrega no pedimos carpetas generadas mediante
doxygen, pero los ficheros de la clases pueden
llevar todos los comentarios doxygen que
queráis; de hecho recomendamos que incluyáis las especificaciones de
todas las operaciones y que sean lo más definitivas posible
El Jutge prueba vuestras entregas mediante 4 juegos de pruebas:
sample: el juego de pruebas público
privat1: combinación de los juegos de pruebas de la entrega intermedia con una situación nueva de eficiencia (gestión de las distancias)
privat2: un poco de todo sobre clusters
privat3: eficiencia de clusters
En un fichero llamado practica.tar tenéis
que entregar
Los ficheros .hh y .cc de las clases y el programa principal
El fichero Makefile, que usaremos para generar y probar el ejecutable
Tened en cuenta las siguientes restricciones:
El fichero que contiene el programa principal se ha de llamar
program.cc
El Makefile ha de generar un ejecutable llamado
program.exe
Es importante que uséis las opciones de compilación del Jutge de PRO2 (ved Documentation Compilers PRO2 a www.jutge.org)
No usar la opción -D_GLIBCXX_DEBUG o
usarla de forma incorrecta podrá ser penalizado
Producid el fichero practica.tar con la
instrucción Linux
tar -cvf practica.tar fitxer1 fitxer2 fitxer3 ...
desde el directorio/carpeta donde tengáis los ficheros que vais a
entregar. Incluid esta instrucción en vuestro Makefile, de forma que el
.tar se pueda generar ejecutando
make practica.tar. Con eso reduciréis el
riesgo de error en sucesivas entregas. El Jutge no acepta
.tar donde los ficheros estén dentro de
carpetas. Recomendamos usar GNU tar para
reducir el riesgo de que el fichero
practica.tar sea incompatible con el Jutge. No
es necesario incluir BinTree.hh en
practica.tar.
Input
3 lee_cjt_especies 5 d GCTCCTGTCCGTTTCAGCCG e TACACCATTAACCGGTGGGG a AAAAGATGACCAGCGTAATG b GCAACCTTTGTGGGCGCAGT c ACGATTTGCGTAAGCTATGT imprime_cjt_especies tabla_distancias imprime_arbol_filogenetico crea_especie f GAAAAAAAAAAAAAAAAAAAAA crea_especie g AAAAAAAAAAAAAAAAAAAAAA imprime_cjt_especies tabla_distancias imprime_arbol_filogenetico elimina_especie nuevo1 crea_especie nuevo1 TTTAAACCCGGG inicializa_clusters elimina_especie a imprime_cjt_especies tabla_distancias ejecuta_paso_wpgma imprime_cluster c ejecuta_paso_wpgma imprime_cluster ac imprime_cluster eg imprime_cluster enuevo1 ejecuta_paso_wpgma ejecuta_paso_wpgma imprime_cluster ac crea_especie nuevo2 AATCTGGCTCTGAATAAGACCCAGTATCAAGCCTTACCA ejecuta_paso_wpgma ejecuta_paso_wpgma imprime_cluster ac inicializa_clusters crea_especie nuevo2 AAA imprime_arbol_filogenetico lee_cjt_especies 0 imprime_cjt_especies tabla_distancias imprime_arbol_filogenetico ejecuta_paso_wpgma crea_especie pangolin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA imprime_cjt_especies tabla_distancias obtener_gen pangolin imprime_arbol_filogenetico ejecuta_paso_wpgma fin
Output
# lee_cjt_especies # imprime_cjt_especies a AAAAGATGACCAGCGTAATG b GCAACCTTTGTGGGCGCAGT c ACGATTTGCGTAAGCTATGT d GCTCCTGTCCGTTTCAGCCG e TACACCATTAACCGGTGGGG # tabla_distancias a: b (90.9091) c (71.4286) d (90.9091) e (90.9091) b: c (87.5) d (87.5) e (83.871) c: d (83.871) e (94.1176) d: e (97.1429) e: # imprime_arbol_filogenetico [(acdbe, 45.7951) [(acd, 43.695) [(ac, 35.7143) [a][c]][d]][(be, 41.9355) [b][e]]] # crea_especie f GAAAAAAAAAAAAAAAAAAAAA # crea_especie g AAAAAAAAAAAAAAAAAAAAAA # imprime_cjt_especies a AAAAGATGACCAGCGTAATG b GCAACCTTTGTGGGCGCAGT c ACGATTTGCGTAAGCTATGT d GCTCCTGTCCGTTTCAGCCG e TACACCATTAACCGGTGGGG f GAAAAAAAAAAAAAAAAAAAAA g AAAAAAAAAAAAAAAAAAAAAA # tabla_distancias a: b (90.9091) c (71.4286) d (90.9091) e (90.9091) f (94.4444) g (94.4444) b: c (87.5) d (87.5) e (83.871) f (100) g (100) c: d (83.871) e (94.1176) f (100) g (100) d: e (97.1429) f (100) g (100) e: f (100) g (100) f: g (9.52381) g: # imprime_arbol_filogenetico [(acdbefg, 49.6528) [(acdbe, 45.7951) [(acd, 43.695) [(ac, 35.7143) [a][c]][d]][(be, 41.9355) [b][e]]][(fg, 4.7619) [f][g]]] # elimina_especie nuevo1 ERROR: La especie nuevo1 no existe. # crea_especie nuevo1 TTTAAACCCGGG # inicializa_clusters a: b (90.9091) c (71.4286) d (90.9091) e (90.9091) f (94.4444) g (94.4444) nuevo1 (88) b: c (87.5) d (87.5) e (83.871) f (100) g (100) nuevo1 (83.3333) c: d (83.871) e (94.1176) f (100) g (100) nuevo1 (92.3077) d: e (97.1429) f (100) g (100) nuevo1 (92.3077) e: f (100) g (100) nuevo1 (66.6667) f: g (9.52381) nuevo1 (96.5517) g: nuevo1 (96.5517) nuevo1: # elimina_especie a # imprime_cjt_especies b GCAACCTTTGTGGGCGCAGT c ACGATTTGCGTAAGCTATGT d GCTCCTGTCCGTTTCAGCCG e TACACCATTAACCGGTGGGG f GAAAAAAAAAAAAAAAAAAAAA g AAAAAAAAAAAAAAAAAAAAAA nuevo1 TTTAAACCCGGG # tabla_distancias b: c (87.5) d (87.5) e (83.871) f (100) g (100) nuevo1 (83.3333) c: d (83.871) e (94.1176) f (100) g (100) nuevo1 (92.3077) d: e (97.1429) f (100) g (100) nuevo1 (92.3077) e: f (100) g (100) nuevo1 (66.6667) f: g (9.52381) nuevo1 (96.5517) g: nuevo1 (96.5517) nuevo1: # ejecuta_paso_wpgma a: b (90.9091) c (71.4286) d (90.9091) e (90.9091) fg (94.4444) nuevo1 (88) b: c (87.5) d (87.5) e (83.871) fg (100) nuevo1 (83.3333) c: d (83.871) e (94.1176) fg (100) nuevo1 (92.3077) d: e (97.1429) fg (100) nuevo1 (92.3077) e: fg (100) nuevo1 (66.6667) fg: nuevo1 (96.5517) nuevo1: # imprime_cluster c [c] # ejecuta_paso_wpgma a: b (90.9091) c (71.4286) d (90.9091) enuevo1 (89.4545) fg (94.4444) b: c (87.5) d (87.5) enuevo1 (83.6022) fg (100) c: d (83.871) enuevo1 (93.2127) fg (100) d: enuevo1 (94.7253) fg (100) enuevo1: fg (98.2759) fg: # imprime_cluster ac ERROR: El cluster ac no existe. # imprime_cluster eg ERROR: El cluster eg no existe. # imprime_cluster enuevo1 [(enuevo1, 33.3333) [e][nuevo1]] # ejecuta_paso_wpgma ac: b (89.2045) d (87.39) enuevo1 (91.3336) fg (97.2222) b: d (87.5) enuevo1 (83.6022) fg (100) d: enuevo1 (94.7253) fg (100) enuevo1: fg (98.2759) fg: # ejecuta_paso_wpgma ac: benuevo1 (90.2691) d (87.39) fg (97.2222) benuevo1: d (91.1126) fg (99.1379) d: fg (100) fg: # imprime_cluster ac [(ac, 35.7143) [a][c]] # crea_especie nuevo2 AATCTGGCTCTGAATAAGACCCAGTATCAAGCCTTACCA # ejecuta_paso_wpgma acd: benuevo1 (90.6909) fg (98.6111) benuevo1: fg (99.1379) fg: # ejecuta_paso_wpgma acdbenuevo1: fg (98.8745) fg: # imprime_cluster ac ERROR: El cluster ac no existe. # inicializa_clusters b: c (87.5) d (87.5) e (83.871) f (100) g (100) nuevo1 (83.3333) nuevo2 (82.9787) c: d (83.871) e (94.1176) f (100) g (100) nuevo1 (92.3077) nuevo2 (87.7551) d: e (97.1429) f (100) g (100) nuevo1 (92.3077) nuevo2 (82.9787) e: f (100) g (100) nuevo1 (66.6667) nuevo2 (85.4167) f: g (9.52381) nuevo1 (96.5517) nuevo2 (98.2143) g: nuevo1 (96.5517) nuevo2 (100) nuevo1: nuevo2 (90.6977) nuevo2: # crea_especie nuevo2 AAA ERROR: La especie nuevo2 ya existe. # imprime_arbol_filogenetico [(bnuevo2enuevo1cdfg, 49.7287) [(bnuevo2enuevo1cd, 45.1006) [(bnuevo2enuevo1, 42.9148) [(bnuevo2, 41.4894) [b][nuevo2]][(enuevo1, 33.3333) [e][nuevo1]]][(cd, 41.9355) [c][d]]][(fg, 4.7619) [f][g]]] # lee_cjt_especies # imprime_cjt_especies # tabla_distancias # imprime_arbol_filogenetico ERROR: El conjunto de clusters es vacio. # ejecuta_paso_wpgma ERROR: num_clusters <= 1 # crea_especie pangolin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # imprime_cjt_especies pangolin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # tabla_distancias pangolin: # obtener_gen pangolin AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA # imprime_arbol_filogenetico [pangolin] # ejecuta_paso_wpgma ERROR: num_clusters <= 1