Rutas
/
AWK
AWK
/
Ejercicios
/
Cuadrado criptográfico
Cuadrado criptográfico

Cuadrado criptográfico

Media

Instrucciones

Implementa el método clásico para componer mensajes secretos conocido como código cuadrado.

Dado un texto en inglés, devuelve la versión codificada de ese texto.

En primer lugar, la entrada se normaliza: se eliminan los espacios y los signos de puntuación del texto en inglés y el mensaje se convierte a minúsculas.

A continuación, los caracteres normalizados se dividen en filas. Estas filas pueden considerarse como un rectángulo cuando se imprimen con saltos de línea intermedios.

Por ejemplo, la frase

"If man was meant to stay on the ground, god would have given us roots."

se normaliza a:

"ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots"

El texto sin cifrar debe organizarse en un rectángulo lo más cuadrado posible. El tamaño del rectángulo debe venir determinado por la longitud del mensaje.

Si c es el número de columnas y r es el número de filas, para el rectángulo r x c encuentra el menor número entero c posible tal que:

  • r * c >= length of message,
  • y c >= r,
  • y c - r <= 1.

Nuestro texto normalizado tiene 54 caracteres, lo que determina un rectángulo con c = 8 y r = 7:

"ifmanwas"
"meanttos"
"tayonthe"
"groundgo"
"dwouldha"
"vegivenu"
"sroots  "

El mensaje codificado se obtiene leyendo las columnas de arriba abajo, de izquierda a derecha.

El mensaje anterior se codifica así:

"imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau"

Devuelve el texto codificado en fragmentos que formen rectángulos perfectos (r X c), con c fragmentos de longitud r, separados por espacios. En las frases a las que les falten n caracteres para completar el rectángulo perfecto, rellena cada uno de los últimos n fragmentos con un único espacio final.

"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn  sseoau "

Fíjate en que, si apiláramos estos fragmentos, podríamos descifrar visualmente el criptograma y recuperar el mensaje original:

"imtgdvs"
"fearwer"
"mayoogo"
"anouuio"
"ntnnlvt"
"wttddes"
"aohghn "
"sseoau "
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
AWK Exercism

¿Listo para empezar Cuadrado criptográfico?

Regístrate en Exercism para aprender y dominar AWK con 3 conceptos92 ejercicios y mentoría humana real, todo gratis.