Implementa a codificação e a descodificação da cifra Rail Fence.
A cifra Rail Fence é uma forma de cifra de transposição que recebe o nome da forma como é codificada. Já era utilizada pelos antigos gregos.
Na cifra Rail Fence, a mensagem é escrita de forma descendente em "carris" sucessivos de uma cerca imaginária, e sobe quando chega ao fundo (como um zigue-zague). Por fim, a mensagem é lida por linhas.
Por exemplo, com três "carris" e a mensagem "WE ARE DISCOVERED FLEE AT ONCE", quem cifra escreve:
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 . .
De seguida, lê:
WECRLTEERDSOEEFEAOCAIVDEN
Para desencriptar uma mensagem, tomas a forma em zigue-zague e preenches o texto cifrado ao longo das linhas.
? . . . ? . . . ? . . . ? . . . ? . . . ? . . . ?
. ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? . ? .
. . ? . . . ? . . . ? . . . ? . . . ? . . . ? . .
A primeira linha tem sete lugares que podem ser preenchidos 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 leres ao longo da forma em zigue-zague, consegues ler a mensagem original.
Inscreve-te no Exercism para aprenderes e dominares Python com 17 conceitos146 exercícios, e mentoria humana real, tudo grátis.