Objetivo
Este é um desafio simples. Seu objetivo é decifrar uma string trocando cada letra pela próxima letra do mesmo caso, mantendo inalterados os caracteres que não são da letra.
Explicação passo a passo
O primeiro caractere é a
E
. Procuramos a próxima letra em maiúscula: é aC
. Trocamos esses caracteres, o que leva aCdoE!
.Avançamos para o próximo caractere: este é a
d
. Procuramos a próxima letra em minúscula: é ao
. Trocamos esses caracteres, o que leva aCodE!
.Avançamos para o próximo personagem: é
d
isso que acabamos de mudar para cá. Nós o ignoramos, porque já foi processado.Nós avançamos para o próximo personagem: este foi o
E
que foi movido aqui para o passo 1. Nós o ignoramos, porque já foi processado.Avançamos para o próximo caractere: este é a
!
. Nós o ignoramos, porque não é uma carta.
Regras
Você pode assumir que a sequência de entrada é composta exclusivamente de caracteres ASCII imprimíveis, no intervalo de 32 a 126.
Você pode escrever um programa completo ou uma função que imprima ou retorne o resultado.
Se a sequência de entrada contiver um número ímpar de letras, a última letra restante não poderá ser trocada por outra e deve permanecer no lugar, independentemente do seu caso. A mesma lógica se aplica se a sequência contiver um número par de letras, mas um número ímpar de letras maiúsculas e um número ímpar de letras minúsculas.
Isso é código-golfe, então a resposta mais curta em bytes vence. As brechas padrão são proibidas.
Casos de teste
Input : lLEhW OroLd!
Output: hELlO WorLd!
Input : rpGOZmaimgn uplRzse naC DEoO LdGf
Output: prOGRamming puzZles anD COdE GoLf
Input : eIt uqHKC RBWOO xNf ujPMO SzRE HTL EOvd yAg
Output: tHe quICK BROWN fOx juMPS OvER THE LAzy dOg
Input : NraWgCi: Nsas-eNEiTIsev rNsiTG!!
Output: WarNiNg: Case-sENsITive sTriNG!!
Casos de teste não tão aleatórios:
Input : (^_^)
Output: (^_^)
Input : AWCTY HUOS RETP
Output: WATCH YOUR STEP
Input : hwn oeesd acsp nawyya
Output: who needs caps anyway
Input : SpMycaeIesKyBorekn
Output: MySpaceKeyIsBroken
Input : D's mroyr, Ivam. I'e faardi I act'n od htta.
Output: I'm sorry, Dave. I'm afraid I can't do that.