Práctica de PRO2 - Otoño 2022 - Entrega final provisional ÚLTIMAS HORAS, USAD LA DEFINITIVA X67526


Statement
 

pdf   zip   tar

html

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 juegos de prueba 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 las 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

Observación

El Jutge prueba vuestras entregas mediante 4 juegos de pruebas:

  • sample: el juego de pruebas público
  • privat1: situaciones que no aparecen en el público
  • privat2: mucho de todo: alfabetos, mensajes y operaciones de codificar/decodificar
  • privat3: mensajes grandes

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 definidas en el menú Documentation → Compilers → PRO2 de www.jutge.org para funcionar en igualdad de condiciones con el Jutge
  • 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 en vuestro Makefile una regla con esta instrucción, 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.

Public test cases
  • Input

    6
    
    abc
    abc
    
    BASE_ADN
    GATC
    
    BASE_ARN
    ACGU
    
    minusculas
    abcdefghijklmnopqrstuvwxyz 
     
    full_interv
     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
     
    full_no_interv
    ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@
    
    8
    
    hell minusculas
    dont worry if there is a hell below we are all going to go
    
    Resistire full_interv
    Cuando pierda todas las partidas / Cuando duerma con la soledad / Cuando se me cierren las salidas / Y la noche no me deje en paz.
    
    Qualsevol_nit full_interv
    Fa una nit clara i tranquila, hi ha la lluna que fa llum / Els convidats van arribant i van omplint tota la casa / De colors i de perfums.
    
    DNA_string_1 BASE_ADN
    ATGGCATTAATGGCATTAATGGCATTA
    
    DNA_string_2 BASE_ADN
    CATTAATGGCATTACATTAATGGCATTA
    
    RNA_string_1 BASE_ARN
    AAGAUGCCGUAAGAUGCCGUAAGAUGCCGU
    
    Contrato_frances_1 full_interv
    Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38
    
    Assembler1 full_interv
    switch_to_pm: / cli / lgdt [gdt_descriptor] / mov eax, cr0 / or eax, 1 / mov cr0,eax / jmp CODE_SEG:init_pm // Let's start with / cli. This instruction basically disables interrupts. We have to do this, because if an interrupt fires while we are in protected mode, but before we have installed the IDT, the CPU will triple fault and reset. The problem is, there is literally no standard C code that emits this instruction, so we are going to have to use inline assembly here. The same applies to lgdt [gdt_descriptor]
    
    listar_alfabetos
    
    listar_mensajes
    
    nuevo_mensaje
    Contrato_frances_2 full_no_interv
    Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38
    
    nuevo_mensaje
    RNA_string_2 BASE_ARN
    CCGUAAGAUGCCCCGUAAGAUGCC
    
    nm RNA_string_2
    BASE_ARN
    AAGAUGCCCCGUAAGAUGCCCCGUCGU
    
    nm acb acb
    acb
    
    nuevo_alfabeto bca
    bca
    
    na
    abc
    abc
    
    borra_mensaje
    DNA_string_2
    
    bm
    DNA_string_2
    
    codificar_sustitucion_guardado
    hell
    curtis mayfield
    
    csg Resistire
    Duo Dinamico
    
    csg
    DNA_string_2
    GGGG
    
    codificar_sustitucion
    minusculas
    esto es una clave
    humanidad yo te amo porque estas todo el tiempo metiendo el secreto de la vida en tus pantalones y olvidando que estas alla y sentandote sobre el
    
    cs
    mayusculas
    CLAVE
    YO LA AME Y ELLA NO ME AMO YO LE DI MI ALMA Y ELLA SE BURLO
    
    decodificar_sustitucion
    minusculas
    esto es una clave
    lleommv xmynbdeueqfscnvhtymervlsuxsvgndprsbrmoqkmzxmwfrndwkteebtptidhwsz dmhxn dpktowdgtasecngrsz kofzmvtacsrpnr dudamdecdozbrry t poonidjgpqirde
    
    ds
    mayusculas
    CLAVE
     Z FEBLMZD KEFPCKNIDOP VQQKYIDNP YMBXIUENXAUBBPLFEBCEUFWBLI
    
    codificar_permutacion_guardado 
    DNA_string_2
    5
    
    cpg RNA_string_2
    100
    
    cpg RNA_string_2 100
    
    codificar_permutacion
    20
     !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~*+,-./:;<=>?@[\]^_`{|}~ !"#$%&'()*+,-.
    
    cp 20
     !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~*+,-./:;<=>?@[\]^_`{|}~ !"#$%&'()*+,-.
    
    decodificar_permutacion
    200
    iE" rDSUEIeE ePSl TacC,o O  MSA LSnmLyaycsuuA saAER,SDl USvOMosAb   MBSnN S.eOi"
    
    dp 200
    iE" rDSUEIeE ePSl TacC,o O  MSA LSnmLyaycsuuA saAER,SDl USvOMosAb   MBSnN S.eOi"
    
    
    borra_alfabeto
    mayusculas
    
    ba BASE_ADN
    
    borra_mensaje DNA_string_1
    
    borra_alfabeto BASE_ADN
    
    la
    
    lm
    fin
    

    Output

    #listar_alfabetos
    1. BASE_ADN
    normal "GATC" 2 mensajes
    2. BASE_ARN
    normal "ACGU" 1 mensajes
    3. abc
    especial [a..c] 0 mensajes
    4. full_interv
    especial [ ..~] 4 mensajes
    5. full_no_interv
    normal "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@" 0 mensajes
    6. minusculas
    normal "abcdefghijklmnopqrstuvwxyz " 1 mensajes
    #listar_mensajes
    1. Assembler1
    full_interv
    "switch_to_pm: / cli / lgdt [gdt_descriptor] / mov eax, cr0 / or eax, 1 / mov cr0,eax / jmp CODE_SEG:init_pm // Let's start with / cli. This instruction basically disables interrupts. We have to do this, because if an interrupt fires while we are in protected mode, but before we have installed the IDT, the CPU will triple fault and reset. The problem is, there is literally no standard C code that emits this instruction, so we are going to have to use inline assembly here. The same applies to lgdt [gdt_descriptor]"
    2. Contrato_frances_1
    full_interv
    "Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38"
    3. DNA_string_1
    BASE_ADN
    "ATGGCATTAATGGCATTAATGGCATTA"
    4. DNA_string_2
    BASE_ADN
    "CATTAATGGCATTACATTAATGGCATTA"
    5. Qualsevol_nit
    full_interv
    "Fa una nit clara i tranquila, hi ha la lluna que fa llum / Els convidats van arribant i van omplint tota la casa / De colors i de perfums."
    6. RNA_string_1
    BASE_ARN
    "AAGAUGCCGUAAGAUGCCGUAAGAUGCCGU"
    7. Resistire
    full_interv
    "Cuando pierda todas las partidas / Cuando duerma con la soledad / Cuando se me cierren las salidas / Y la noche no me deje en paz."
    8. hell
    minusculas
    "dont worry if there is a hell below we are all going to go"
    #nuevo_mensaje Contrato_frances_2 full_no_interv
    9
    #nuevo_mensaje RNA_string_2 BASE_ARN
    10
    #nm RNA_string_2 BASE_ARN
    error: ya existe un mensaje con ese identificador
    #nm acb acb
    error: el alfabeto no existe
    #nuevo_alfabeto bca
    7
    #na abc
    error: el alfabeto ya existe
    #borra_mensaje DNA_string_2
    9
    #bm DNA_string_2
    error: el mensaje no existe
    #codificar_sustitucion_guardado hell "curtis mayfield"
    "fhdlhnncrveqjkwjyhxh rlaxmmpwcdybgdrvq ywmdlontxgqefltleos"
    #csg Resistire "Duo Dinamico"
    "gkQn)YnRWOVT&udo)KbaZKWo5Wbt.NPUmxc3:W^d4iSWS\QQDY_nDVPaaYPU)WT Si2WOXH_DiU 2OnEWOVb*dol&]nUOVMT&io/DCnNOiR_(^U 3YnOSiHU/[oe3i_Chw"
    #csg DNA_string_2 "GGGG"
    error: el mensaje no existe
    #codificar_sustitucion minusculas "esto es una clave"
    "lleommv xmynbdeueqfscnvhtymervlsuxsvgndprsbrmoqkmzxmwfrndwkteebtptidhwsz dmhxn dpktowdgtasecngrsz kofzmvtacsrpnr dudamdecdozbrry t poonidjgpqirde"
    #cs mayusculas "CLAVE"
    error: el alfabeto no existe
    #decodificar_sustitucion minusculas "esto es una clave"
    "humanidad yo te amo porque estas todo el tiempo metiendo el secreto de la vida en tus pantalones y olvidando que estas alla y sentandote sobre el"
    #ds mayusculas "CLAVE"
    error: el alfabeto no existe
    #codificar_permutacion_guardado DNA_string_2 5
    error: el mensaje no existe
    #cpg RNA_string_2 100
    "UCUCAAGAGGCCUCUCAACAGCGG"
    #cpg RNA_string_2 100
    "UCUCAAGAGGCCUCUCAACAGCGG"
    #codificar_permutacion 20
    ""& #.'!%(),;*-$<:+/=@^>[+_?]`{~.|*\/-},:=[;>}\<@]^{!_|?" `~#'%,$()-+&*."
    #cp 20
    ""& #.'!%(),;*-$<:+/=@^>[+_?]`{~.|*\/-},:=[;>}\<@]^{!_|?" `~#'%,$()-+&*."
    #decodificar_permutacion 200
    ""Si PUEDES leer ESTO, con COMILLAS y mayusculas ABSURDAS, vas MAS o MENOS bien.""
    #dp 200
    ""Si PUEDES leer ESTO, con COMILLAS y mayusculas ABSURDAS, vas MAS o MENOS bien.""
    #borra_alfabeto mayusculas
    error: el alfabeto no existe
    #ba BASE_ADN
    error: hay mensajes guardados con el alfabeto
    #borra_mensaje DNA_string_1
    8
    #borra_alfabeto BASE_ADN
    6
    #la
    1. BASE_ARN
    normal "ACGU" 2 mensajes
    2. abc
    especial [a..c] 0 mensajes
    3. bca
    normal "bca" 0 mensajes
    4. full_interv
    especial [ ..~] 4 mensajes
    5. full_no_interv
    normal "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-./0123456789:;<=>?@" 1 mensajes
    6. minusculas
    normal "abcdefghijklmnopqrstuvwxyz " 1 mensajes
    #lm
    1. Assembler1
    full_interv
    "switch_to_pm: / cli / lgdt [gdt_descriptor] / mov eax, cr0 / or eax, 1 / mov cr0,eax / jmp CODE_SEG:init_pm // Let's start with / cli. This instruction basically disables interrupts. We have to do this, because if an interrupt fires while we are in protected mode, but before we have installed the IDT, the CPU will triple fault and reset. The problem is, there is literally no standard C code that emits this instruction, so we are going to have to use inline assembly here. The same applies to lgdt [gdt_descriptor]"
    2. Contrato_frances_1
    full_interv
    "Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38"
    3. Contrato_frances_2
    full_no_interv
    "Le contrat d'ouverture d'un livret A prevu a l'article R. 221-1 rappelle les memes exigences ainsi que les sanctions encourues a raison de leur meconnaissance. Il informe egalement le client des modalites selon lesquelles s'effectue la procedure de verification prevue a l'article L. 221-38"
    4. Qualsevol_nit
    full_interv
    "Fa una nit clara i tranquila, hi ha la lluna que fa llum / Els convidats van arribant i van omplint tota la casa / De colors i de perfums."
    5. RNA_string_1
    BASE_ARN
    "AAGAUGCCGUAAGAUGCCGUAAGAUGCCGU"
    6. RNA_string_2
    BASE_ARN
    "CCGUAAGAUGCCCCGUAAGAUGCC"
    7. Resistire
    full_interv
    "Cuando pierda todas las partidas / Cuando duerma con la soledad / Cuando se me cierren las salidas / Y la noche no me deje en paz."
    8. hell
    minusculas
    "dont worry if there is a hell below we are all going to go"
    
  • Information
    Author
    PRO2
    Language
    Spanish
    Official solutions
    Make
    User solutions
    Make