O Quadrado de Políbio básico é uma grade quadrada de 5x5 com as letras A-Z escritas nela. "I" e "J" normalmente compartilham uma casa (pois há 26 letras e apenas 25 casas).
| 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|
| 1 | A | B | C | D | E |
| 2 | F | G | H | I/J | K |
| 3 | L | M | N | O | P |
| 4 | Q | R | S | T | U |
| 5 | V | W | X | Y | Z |
A cifra Bifid usa o quadrado de Políbio, mas adiciona uma camada de complexidade.
Comece com uma mensagem secreta. Remova os espaços e a pontuação.
plaintext = "ikilledmufasa"Cifre a mensagem usando a cifra de Políbio básica (consulte meu desafio anterior — clique com o botão direito e selecione "abrir em uma nova aba"), mas escreva os números em duas linhas abaixo da mensagem, desta forma:
| i | k | i | l | l | e | d | m | u | f | a | s | a |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | 2 | 2 | 3 | 3 | 1 | 1 | 3 | 4 | 2 | 1 | 4 | 1 |
| 4 | 5 | 4 | 1 | 1 | 5 | 4 | 2 | 5 | 1 | 1 | 3 | 1 |
Leia os números horizontalmente, em pares:
22 23 31 13 42 14 14 54 11 54 25 11 31Gere o texto cifrado convertendo esses novos pares de números em novas letras usando o quadrado de Políbio.
ciphertext = "ghlcrddyaykal"Crie uma função que receba um texto não cifrado ou um texto cifrado e retorne o texto cifrado ou o texto não cifrado correspondente.
bifid("I killed Mufasa!") ➞ "ghlcrddyaykal"
bifid("ghlcrddyaykal") ➞ "ikilledmufasa"
bifid("hi") ➞ "go"N/A