Implemente o método clássico para compor mensagens secretas chamado código quadrado.
Dado um texto em inglês, produza a versão codificada desse texto.
Primeiro, a entrada é normalizada: os espaços e a pontuação são removidos do texto em inglês e a mensagem é convertida para minúsculas.
Em seguida, os caracteres normalizados são divididos em linhas. Essas linhas podem ser vistas como formando um retângulo quando impressas com quebras de linha entre elas.
Por exemplo, a frase
"If man was meant to stay on the ground, god would have given us roots."
é normalizada para:
"ifmanwasmeanttostayonthegroundgodwouldhavegivenusroots"
O texto claro deve ser organizado em um retângulo o mais quadrado possível. O tamanho do retângulo deve ser decidido pelo comprimento da mensagem.
Se c é o número de colunas e r é o número de linhas, então, para o retângulo r x c, encontre o menor número inteiro c possível tal que:
r * c >= length of message,c >= r,c - r <= 1.Nosso texto normalizado tem 54 caracteres, o que determina um retângulo com c = 8 e r = 7:
"ifmanwas"
"meanttos"
"tayonthe"
"groundgo"
"dwouldha"
"vegivenu"
"sroots "
A mensagem codificada é obtida lendo as colunas de cima para baixo, da esquerda para a direita.
A mensagem acima é codificada como:
"imtgdvsfearwermayoogoanouuiontnnlvtwttddesaohghnsseoau"
Produza o texto codificado em blocos que preencham retângulos perfeitos (r X c), com c blocos de comprimento r, separados por espaços.
Para frases que ficam n caracteres aquém do retângulo perfeito, preencha cada um dos últimos n blocos com um único espaço no final.
"imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau "
Repare que, se empilhássemos esses blocos, poderíamos decodificar visualmente o texto cifrado de volta à mensagem original:
"imtgdvs"
"fearwer"
"mayoogo"
"anouuio"
"ntnnlvt"
"wttddes"
"aohghn "
"sseoau "
Crie sua conta no Exercism para aprender e dominar AWK com 3 conceitos92 exercícios e mentoria humana de verdade, tudo de graça.