Desafio:
Dada uma sequência contendo apenas letras maiúsculas e / ou minúsculas (o que você preferir), coloque tape
horizontalmente para corrigi-la. Fazemos isso verificando a diferença de duas letras adjacentes no alfabeto (ignorando o contorno e apenas avançando) e preenchendo o espaço com o máximo TAPE
/ tape
necessário.
Exemplo:
Entrada: abcmnnnopstzra
Saída:abcTAPETAPETmnnnopTAstTAPETzra
Por quê?
- Entre
c
em
deve serdefghijkl
(comprimento 9), então preenchemos isso comTAPETAPET
; - Entre
p
es
deve serqr
(comprimento 2), então preenchemos isso comTA
; - Entre
t
ez
deve seruvwxy
(comprimento 5), por isso preenchemos issoTAPET
.
Regras do desafio:
- A diferença se aplica apenas a frente, portanto, não há fita entre elas
zra
. - É possível ter várias das mesmas letras adjacentes como
nnn
. - Você tem permissão para receber a entrada em qualquer formato razoável. Pode ser uma única string, string-array / lista, caractere-array / lista, etc. A saída tem a mesma flexibilidade.
- Você tem permissão para usar letras minúsculas e / ou maiúsculas da maneira que desejar. Isso se aplica à entrada, saída e
TAPE
. - É possível que não
TAPE
seja necessário; nesse caso, a entrada permanece inalterada.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link para um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
Input: "abcmnnnopstzra"
Output: "abcTAPETAPETmnnnopTAstTAPETzra"
Input: "aza"
Output: "aTAPETAPETAPETAPETAPETAPEza"
Input: "ghijk"
Output: "ghijk"
Input: "aabbddeeffiiacek"
Output: "aabbTddeeffTAiiaTcTeTAPETk"
Input: "zyxxccba"
Output: "zyxxccba"
Input: "abccxxyz"
Output: "abccTAPETAPETAPETAPETAPExxyz"
Input: "abtapegh"
Output: "abTAPETAPETAPETAPETtaTAPETAPETAPETApeTgh"
Input: "tape"
Output: "taTAPETAPETAPETApe"
ab[TAPETAPETAPETAPET]TA[TAPETAPETAPETA]PE[T]gh
(acrescentou o []
para torná-lo mais legível).