Implementa el método clásico para componer mensajes secretos llamado código cuadrado.
Dado un texto en inglés, devuelve la versión codificada de ese texto.
Primero, la entrada se normaliza: se eliminan los espacios y la puntuación del texto en inglés y el mensaje se convierte a minúsculas.
Después, los caracteres normalizados se dividen en filas. Estas filas se pueden considerar como la formación de un rectángulo cuando se imprimen con saltos de línea entre ellas.
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 plano debe organizarse en un rectángulo lo más cuadrado posible. El tamaño del rectángulo debe decidirse según la longitud del mensaje.
Si c es el número de columnas y r es el número de filas, entonces, para el rectángulo r x c, encuentra el menor entero c posible tal que:
r * c >= length of message,c >= r,c - r <= 1.Nuestro texto normalizado tiene 54 caracteres, lo que dicta un rectángulo con c = 8 y r = 7:
"ifmanwas"
"meanttos"
"tayonthe"
"groundgo"
"dwouldha"
"vegivenu"
"sroots "
El mensaje codificado se obtiene leyendo hacia abajo por las columnas, de izquierda a derecha.
El mensaje anterior se codifica así:
"imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau"
Devuelve el texto codificado en fragmentos que llenen rectángulos perfectos (r X c), con c fragmentos de longitud r, separados por espacios.
Para las frases a las que les faltan n caracteres para el rectángulo perfecto, rellena cada uno de los últimos n fragmentos con un solo espacio al final.
"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau "
Fíjate que si apiláramos estos fragmentos, podríamos decodificar visualmente el texto cifrado y volver al mensaje original:
"imtgdvs"
"fearwer"
"mayoogo"
"anouuio"
"ntnnlvt"
"wttddes"
"aohghn "
"sseoau "
Regístrate en Exercism para aprender y dominar Gleam con 33 conceptos122 ejercicios y mentoría humana real, todo gratis.