Laboratorio 6: "Paint Me and Reverse Nonogram"

Post date: Mar 1, 2013 6:14:26 PM

El objetivo de este laboratorio es implementar en el lenguaje de programación Python 3 una solución a dos problemas de maratón de programación. Para ello, el estudiante deberá modificar unas plantillas dadas que implementan la entrada de los problemas en cada uno de sus formatos, y entregar una solución para cada uno de los problemas asignados.

Siguiendo la plantilla, identifique:

  1. La función main(); esta función se encarga de leer la entrada del problema y procesarla; para cada instancia del problema llama la función init() con los parámetros dados
  2. La función solve(...); esta función se invoca para cada instancia del problema definida por los casos de prueba y sus parámetros dependen de cada problema. Inicialmente esta función está vacia.

Una vez familiarizados con el código de la plantilla :

  1. Implemente la función solve(...) con los parámetros dados en cada una de las plantillas, para cada uno de los siguientes problemas:
    • E - Paint Me
    • G - Reverse Nonogram
  2. Pruebe que su solución funciona con los datos de prueba suministrados en el enunciado.

El laboratorio es individual y la instrucciones para la entrega son las siguientes:

  1. Para cada problema se ha suministrado un archivo de pruebas (con extensión .in)
  2. Para cada solución (es decir, para paintme.py y nonogram.py) genere un archivo con las respuestas a los casos de prueba. Por ejemplo, para el problema E - Paint Me, ejecute el siguiente comando suponiendo que la solución paintme.py y los casos de prueba paintme.in están en el mismo directorio:
    • (python3 paintme.py < paintme.in) > paintme.out
  3. Calcule la suma md5 para cada uno de los dos archivos .out generados con las instrucciones anteriores. Por ejemplo, para el problema E - Paint Me, ejecute el siguiente comando:
    • md5sum paintme.out

Ejecutar el último comando, genera una número hexagesimal de 32 dígitos que corresponde a la suma md5 de cada una de las soluciones.

Cada estudiante debe entregar:

  • El código impreso de las dos soluciones
    • El encabezado del archivo debe indicar, usando comentarios de Python,
      • Su nombre en la primera línea
      • Su código de estudiante en la segunda línea
      • La suma md5 de los archivos con las respuestas generadas por las soluciones