Implemente a codificação e a decodificação da cifra de cerca (rail fence cipher).
A cifra de cerca é um tipo de cifra de transposição que recebe esse nome pela forma como é codificada. Ela já era usada pelos antigos gregos.
Na cifra de cerca, a mensagem é escrita de cima para baixo em "trilhos" sucessivos de uma cerca imaginária e, ao chegar ao fundo, sobe de volta (como em um zigue-zague). Por fim, a mensagem é lida linha a linha.
Por exemplo, usando três "trilhos" e a mensagem "WE ARE DISCOVERED FLEE AT ONCE", quem cifra escreve o seguinte:
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .
Depois, lê o seguinte:
WECRLTEERDSOEEFEAOCAIVDEN
Para decifrar uma mensagem, você monta o formato de zigue-zague e preenche o texto cifrado ao longo das linhas.
? . . . ? . . . ? . . . ? . . . ? . . . ? . . . ?
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
A primeira linha tem sete posições que podem ser preenchidas com "WECRLTE".
W . . . E . . . C . . . R . . . L . . . T . . . E
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
Agora a segunda linha recebe "ERDSOEEFEAOC".
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
Deixando "AIVDEN" para a última linha.
W . . . E . . . C . . . R . . . L . . . T . . . E
. E . R . D . S . O . E . E . F . E . A . O . C .
. . A . . . I . . . V . . . D . . . E . . . N . .
Se agora você ler ao longo do formato de zigue-zague, vai conseguir ler a mensagem original.
Crie sua conta no Exercism para aprender e dominar SQLite com 81 exercícios e mentoria humana de verdade, tudo de graça.