Obbiettivo
Questa è una sfida semplice. Il tuo obiettivo è di decodificare una stringa scambiando ogni lettera con la lettera successiva dello stesso caso, lasciando invariati i caratteri non lettera.
Spiegazione dettagliata
Il primo personaggio è a
E
. Cerchiamo la lettera successiva in maiuscolo: è aC
. Scambiamo questi personaggi, il che porta aCdoE!
.Passiamo al personaggio successivo: questo è un
d
. Cerchiamo la lettera successiva in minuscolo: è ao
. Scambiamo questi personaggi, il che porta aCodE!
.Passiamo al personaggio successivo: questo è quello
d
che ci siamo appena trasferiti qui. Lo ignoriamo perché è già stato elaborato.Passiamo al personaggio successivo: questo è quello
E
che è stato spostato qui al passaggio # 1. Lo ignoriamo perché è già stato elaborato.Passiamo al personaggio successivo: questo è un
!
. Lo ignoriamo, perché non è una lettera.
Regole
Si può presumere che la stringa di input sia composta esclusivamente da caratteri ASCII stampabili, nell'intervallo 32-126.
È possibile scrivere un programma completo o una funzione, che stampa o restituisce il risultato.
Se la stringa di input contiene un numero dispari di lettere, l'ultima lettera rimanente non può essere scambiata con un'altra e deve rimanere al suo posto, indipendentemente dal caso. La stessa logica si applica se la stringa contiene un numero pari di lettere, ma un numero dispari di lettere maiuscole e un numero dispari di lettere minuscole.
Questo è code-golf, quindi vince la risposta più breve in byte. Sono vietate le scappatoie standard.
Casi test
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!!
Casi di test non casuali:
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.