Decifrar sapos neuróticos
Agora que o Puzzling.SE finalmente quebrou minha cifra obcecada por anfíbios , vamos escrever um programa ou função para descriptografá-la!
(Se você quiser ver o quebra-cabeça antes de estragá-lo, clique no link acima agora.)
Como a cifra funciona
Em Neurotic Frogs O ught Para Rel um x em M ud Banhos ( "Neurotic Frogs" para o short), cada letra é criptografada como uma ou duas palavras:
- O comprimento de uma palavra em itálico representa uma letra.
neurotic
=> 8 letras =>H
frogs
=> 5 letras =>E
perpendicular
=> 13 letras =M
- Uma palavra que contenha itálico modifica a palavra a seguir, adicionando 10 se a palavra em itálico tiver tamanho ímpar ou 20 se a palavra em itálico tiver tamanho par. Qualquer uma ou todas as palavras podem estar em itálico. Uma palavra em itálico é sempre seguida por uma palavra não em itálico.
*o*ught to
=> ímpar, 2 => 12 =>L
lo*u*nging calms
=> par, 5 => 25 =>Y
Toda palavra de texto simples corresponde a uma frase de texto cifrado, e toda frase de texto simples corresponde a um parágrafo de texto cifrado.
Formato de entrada
Seu programa ou função deve inserir uma mensagem no Neurotic Frogs, formatado em Markdown. A entrada consistirá apenas em ASCII imprimível e novas linhas.
- As palavras são séries de caracteres que correspondem ao regex
[A-Za-z0-9']
.- Números e letras contam para o comprimento de uma palavra.
QB64
representaD
. - NOTA: Os apóstrofos não contam para o comprimento de uma palavra.
Isn't
representaD
, nãoE
.
- Números e letras contam para o comprimento de uma palavra.
- As letras em itálico são colocadas em um par de asteriscos (
*letters*
).- Uma ou mais letras consecutivas podem estar em itálico, com uma palavra inteira (
masseus*es*
,*all*
); várias letras não consecutivas em uma palavra também podem estar em itálico (g*e*n*e*rates
). - O itálico nunca abrange várias palavras, nunca inclui pontuação e nunca inclui apóstrofos.
- Asteriscos não emparelhados e vários asteriscos adjacentes nunca ocorrerão.
- Uma ou mais letras consecutivas podem estar em itálico, com uma palavra inteira (
- A pontuação é qualquer um dos seguintes caracteres:
.,?!:;-()"
.- As palavras em uma frase são separadas por um ou mais caracteres de pontuação e / ou um único espaço. Exemplos:
*all* welcomed
,toad*s*, newts
,Ever*y*one--frogs
,cap... bliss
,they're (I
- As frases terminam com um ou mais caracteres de pontuação e são separadas por um espaço duplo:
Th*e* Montgomery A*m*phibian Salon! Come luxuriate today!
- Os parágrafos são separados por uma única nova linha. (A última frase de um parágrafo ainda possui um ou mais caracteres de pontuação no final.)
- As palavras em uma frase são separadas por um ou mais caracteres de pontuação e / ou um único espaço. Exemplos:
Outros caracteres não aparecerão na entrada e não precisam ser manipulados.
Seu código pode, a seu critério, esperar que a entrada tenha uma única nova linha à direita.
Formato de saída
O resultado da descriptografia da entrada será uma ou mais frases. Letras em texto sem formatação podem ser qualquer combinação de maiúsculas e minúsculas. As palavras em uma frase devem ser separadas por espaços únicos. As frases devem terminar com um ponto ( .
) e ser separadas por um único espaço. Você pode gerar um espaço à direita após a última frase. Sua saída estará toda em uma linha, mas você poderá gerar uma nova linha à direita.
Detalhes diversos
Seu código pode usar qualquer um dos métodos padrão de entrada e saída. Ele deve receber entrada como uma sequência de linhas múltiplas, não como uma lista ou outra estrutura de dados e deve gerar uma sequência de caracteres.
O código mais curto em bytes vence!
Casos de teste
-->
Neurotic Frogs *O*ught To Rel*a*x In *M*ud Baths!
<--
HELLO.
-->
Business standards all*o*w only *adult* amphibians.
<--
HINT.
-->
Rejoice, *a*ll frogs an*d* toads also! Montgomery Sal*o*n opens up! Ha*pp*y throng fill*s* street ecstatically!
<--
GOOD JOB PPL.
-->
I like 3.1415926535897.
IM*O*, it's a *b*la*st*, yeah!
<--
ADAM. MAN.
-->
*I*, happily, *th*anks 2 u *e*ditin*g* specific wor*ding*--clarifying a *bit*--betterment :D!
<--
QUARTATA.
-->
Perpendicular l*ou*nging calms. *A* frog, a m*u*d cap... bliss! Wallowing g*e*n*e*rates happiness. Amphibian sp*a* isn't expensive--seventy d*o*llars--cheap! That'*s* not *a* large e*x*pens*e* from an*y* discerning fr*o*g's money, unlik*e* Super 8.
Ever*y*one--frogs, toad*s*, newts, *a*nd salamanders! G*e*t a wonderful shiat*s*u, or recei*v*e an other kind. Masseus*es* are her*e* today! Invite a fianc*e*e, supervisor, roommate, niece: *all* welcomed!
Y*o*u simply ne*v*er believed these p*o*ssibilitie*s*; they're (I *swear*) absolute truth! Th*e* Montgomery A*m*phibian Salon! Come luxuriate today!
<--
MY NAME IS INIGO MONTOYA. YOU KILLED MY FATHER. PREPARE TO DIE.