Copiado al portapapeles
Descripción
Durante la historia el hombre siempre ha buscado formas de ocultar mensajes y tener una forma de comunicarse secretamente. El hombre con el tiempo inventa diferentes técnicas desde algunas utilizadas con la tinta en el papel hasta complejos sistemas matemáticos los cuales utilizamos hoy en día.
Una de las técnicas utilizadas hace muchos años se llamaba Cifrado Reticulado. Llamemos clave de cifrado/descifrado a un papel cuadriculado con cortes de ventanilla en ciertos cuadrados de la cuadrícula. Este papel siempre será cuadrado, es decir misma cantidad de filas y columnas además de tener un número par de filas y columnas. Las personas que deseaban mantener un mensaje secreto usando esta técnica deben tener esta clave de cifrado/descifrado.
Las ventanillas cortadas de nuestra clave de cifrado/descifrado no serán cortadas arbitrariamente. Las reglas para generar una clave de cifrado/descifrado son las siguientes:
El papel cuadriculado lo dividimos en cuatro regiones. La cantidad de cuadrículas en cada región es la cantidad de cuadrículas que serán cortadas. Ejemplo. Si nuestro papel es de cuadrículas en total entonces tendremos cuatro regiones cada una con 16 cuadrículas lo que nos indica que deben ser 16 cuadrículas las que deben ser cortadas.
Cada región la enumeramos dando vuelta el papel en dirección opuesta a las manillas del reloj. (Ver Figura 1)
Se deben elegir 16 cuadrículas a cortar en los que no se repita el número elegido. Ejemplo: si se elige en la primera región el número 1 para ser cortado, entonces el número 1 no puede ser cortado en ningúna de las tres regiones restantes. La Figura 2 indica que las casillas pintadas de negro se encuentran recortadas.
Figura 1.
Figura 2.
Una vez se tenga la clave de cifrado/descifrado para poder ocultar un mensaje debemos tener otro papel con las mismas longitudes que nuestra clave de cifrado/descifrado. Para ocultar un texto debemos poner la letra de izquierda a derecha del texto en las casillas del nuevo papel donde la clave de cifrado/descifrado estén recortadas (o marcadas con negro), luego dar vueltas la clave en el orden que están marcadas las caras en la Figura 2 y seguir escribiendo las letras hasta completarlas. Por ejemplo se desea ocultar el siguiente mensaje: suspenda la reunion de los delegados de la region. alguien ha avisado a la poli. La hoja del texto cifrado (sin incluir espacios, puntos, etc.) se armaría de la siguiente forma: (Ver Figura 3)
Figura 3.
Pero bueno, he aquí la historia de nuestros dos amigos hackers Alan y Botas que encontraron esta técnica navegando por la red y la utilizaron para hacer travesuras en el Instituto Científico Patito Corcho (ICPC). Nuestros amigos hackers tenían la misma clave de cifrado/descifrado y la utilizaban para pasarse las respuestas en los examenes de la materia de Historia de las Computadoras. Por mala suerte el profesor de esta materia descubrió que Alan y Botas se pasaban un papelito durante el examen. El contenido de este era irreconocible para el profesor lo que lo enfureció más y anuló el examen de nuestros amigos hackers.
El profesor obstinado con saber cual era el contenido de este papelito se pasó noches tratando de descifrarlo. Rendido tras no haber conseguido descifrar el contenido habló con nuestros amigos hackers Alan y Botas ofreciéndoles una segunda oportunidad para reemplazar el examen anulado a cambio de que nuestros amigos le digan que técnica utilizaron para cifrar sus trampas. Pues bién, nuestros dos amigos hackers fueron generosos le dijeron que era la técnica de Cifrado Reticulado además de darle la clave de cifrado/descifrado.
Con mucho entusiasmo el profesor fue a su casa a investigar esta técnica y se le ocurrió la idea de tener un programa que dada la clave de cifrado/descifrado y un texto cifrado se pueda descifrar y ver el contenido real del texto. Lamentablemente el profesor había olvidado los pocos conocimientos de programación que tenía, peró recordó que tú eras uno de sus estudiantes y te pide ayuda con este inconveniente que tiene.
Ayuda al profesor a descifrar un texto dada la clave de cifrado/descifrado.
Entrada
La entrada consta de T casos de prueba (). Cada caso de prueba inicia con un número (, N par) que representa el tamaño de la matriz que representa la clave de cifrado/descifrado. Luego siguen cadenas cada una con caractéres (0 o 1) donde 1 representa una casilla marcada y el 0 una casilla sin marcar (la matriz de cifrado/descifrado que cumplen las reglas descritas al inicio del problema). Las siguiente líneas forman el mensaje a descifrar, las cadenas () solo cuentan con los caracteres de la a hasta la z
Salida
La salida consiste en una línea por caso que representa el texto descifrado. No es necesario incluir símbolos de separación como saltos de línea, espacios, tabulación, etc. (El ejemplo de salida de abajo debe ser impreso en una sola línea)