O idioma geobitsiano é uma nova perversão do inglês, onde uma palavra é dividida em segmentos que devem começar com uma letra diferente. Toda vez que uma dessas letras iniciais aparece em outra sequência, ela é substituída por todo o segmento correspondente, mantendo a capitalização.
Esse processo é chamado de geobitsizing .
Por exemplo, a palavra " Geobits " poderia ser quebrada geo bits
e o poema sem sentido
Algy met a Bear
A Bear met Algy
The Bear was bulgy
The bulge was Algy
seria Geobitsized com ele como
Algeoy met a Bitsear
A Bitsear met Algeoy
The Bitsear was bitsulgeoy
The bitsulgeoe was Algeoy
porque todo g
se torna geo
, todo G
(embora não exista) se torna Geo
, todo b
se torna bits
e todo B
se torna Bits
.
Observe que cada substituição é executada em relação à sequência original, não a nenhuma etapa intermediária. por exemplo, se geo
tivesse sido gbo
, os b
criados não seriam substituídos por bits
.
Desafio
Escreva um programa ou função que possa gerar linguagem Geobitsian.
Pegue uma cadeia de linha única composta por letras minúsculas (az) e espaços. Essa será a palavra usada como argumento de Geobitsizing, com os espaços separando os segmentos. Você pode assumir:
- Os segmentos não estarão vazios. Portanto, os espaços não serão vizinhos nem estarão no início ou no final da string.
- Cada segmento começa com uma letra diferente. Portanto, não pode haver mais de 26.
Por exemplo, algumas cordas segmentados válidos você deve apoiar são geo bits
, butt ner
, alex
, e do o r k nob
(segmentos de uma única letra não têm efeito, mas são válidos). Mas geo
, butt ner
, Alex
, e do o r k n ob
são inválidos.
Seu programa ou função também precisa incluir outra sequência arbitrária para aplicar o Geobitsizing e imprimir ou retornar o idioma geobitsiano resultante.
Você pode assumir que essa sequência contém apenas novas linhas e ASCII imprimível.
Lembre-se de que as maiúsculas e minúsculas devem ser preservadas da entrada para a saída.
Aqui estão mais alguns exemplos usando no pro gr am m ing
como argumento Geobitsizing:
[empty string]
→ [empty string]
i
→ ing
I
→ Ing
Mmmm, mmm... MmmmMMM: m&m!
→ Mmmm, mmm... MmmmMMM: m&m!
(sem alteração)
People think bananas are great, don't you?
→ Proeoprole thingnok bamnoamnoams amre grreamt, dono't you?
Pet a Puppy
Google Wikipedia
↓
Proet am Prouproproy
Groogrle Wingkingproedingam
Observe que os resultados devem ser idênticos, independentemente da organização do argumento, por exemplo, ing pro m no am gr
devem produzir os mesmos resultados acima.
O código mais curto em bytes vence.
\\b${l}(\\S+)
embora isso lhe custe 5 bytes.
abra cadabra
, !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
que deve abranger todos os casos de ponta, e há um monte deles, se alguém tentar usar expressões regulares ...
["no", "pro", "gr", "am", "m", "ing"]