Alguns de seus funcionários quebraram as teclas de trava e você é muito barato para substituí-las. Ajude-os criando o programa mais curto possível para corrigir seu trabalho! Simplesmente converta cada caractere em uma determinada string de maiúsculas para minúsculas e vice-versa ... mas há uma diferença!
Você também está muito animado para o Natal! Então você vai deixar um pequeno "bug" que não corrige letras que estão dentro de sequências de Christmas
(sem distinção entre maiúsculas e minúsculas).
Entrada
Para entrada, você usará uma única sequência (ou matriz de bytes) que pode conter novas linhas e ascii entre 0x20 e 0x7e ( -
~
). Você não precisa se preocupar com retornos de carro ou com outros caracteres na cadeia.
Saída
A saída deve conter apenas a string fornecida com os caracteres maiúsculos e minúsculos trocados (e o bug do Natal, é claro!). Pode conter até um espaço em branco à direita extra.
Bug de Natal
Vamos explicar isso com um exemplo:
Input: i CAN HARDLY WORK LIKE THIS please GET ME A NEW KEYBOARD FOR cHRISTMAS
Output: I Can HaRdly work lIke thiS PLEASE geT Me A new keyboard for ChriStmas
can
contém "c", que é a primeira letra do Natal, para que não seja alterado. A próxima letra em Christmas
é "h", que está em hardly
(que também contém o "r"), para que não seja alterada, etc. em Christmas
si só tem uma letra inalterada porque, quando o código chega lá, ele está procurando por "s", não "c".
Uma vez que a sequência é encontrada, ela deve começar novamente em "c" e começar a iterar Christmas
novamente. Então, ChristmasChristmas
seria deixado inalterado.
Casos de teste
Input: Hello World!
Output: hELLO wORLD!
Input: I like pie :)
Output: i LIKE PIE :)
Input: hELP my KeYboarD
iS BROKEN
Output: Help MY kEyBOARd
Is broken
Input: cHRISTMAS IS COMING REALLY SOON!
Output: cHRISTMAS is Coming really soon!
Input: C is the first letter in cHRISTMAS
Output: C IS ThE FIrST LETTER iN ChriSTMAS
Vencedora
Isso é código-golfe, então a resposta mais curta vence!
Christmas
sequencialmente, por isso "h" é ignorado até encontrar "c", então ele procura por "h", em seguida, "r", etc.Respostas:
05AB1E , 16 bytes
Agradecimentos a Emigna por salvar um byte e corrigir um bug!
Explicação:
Usa a codificação CP-1252 . Experimente online!
fonte
u
ela funcionará.V ,
38, 36 bytesExperimente online! (contém entrada e saída esperada para comparação)
Quando vi isso pela primeira vez, pensei que seria extremamente fácil. Na verdade, se não fosse para o bug "natal", este seria apenas 2 bytes:
V~
. O bug do natal torna significativamente mais difícil, para uma resposta muito hacky.Como de costume, aqui está um hexdump:
fonte
PHP,
113110102 bytesrecebe entrada do primeiro argumento da linha de comando. Corra com
-r
.demolir
fonte
MATL ,
3630 bytesSeqüências de caracteres com novas linhas precisam ser definidas concatenando-se com o código ASCII
10
(veja o exemplo no link com os casos de teste).Experimente online! Ou verifique todos os casos de teste .
Explicação
fonte
Pyke,
3125 bytesExperimente aqui!
fonte
\n
e cercar a entrada,"
então sim #Perl 6 , 84 bytes
fonte
Bytes em C # 197
Não vou ganhar com isso, mas espero que a menor implementação de C # que funcione ...
Explicação:
fonte
JavaScript,
12211811410710493 bytesfonte
k!=c?k:c.toUpperCase()
para economizar alguns bytes?Perl 6 , 80 bytes
Tente
fonte
my $i=0;
seja legal. E não ficaria surpreso se houvesse mais erros de sintaxe relacionados ao espaço em branco.$/ eq $/.lc
e não$/.lc eq $/
para remover o espaço anteseq
.Java 7, 200 bytes
Feio, mas funciona .. Definitivamente, sem dúvida, posso jogar mais golfe .. Estou enferrujado ..
Ungolfed:
Código do teste:
Experimente aqui.
Saída:
fonte
Python 100 bytes
fonte
Ruby, 63 + 1 = 64 bytes
Usa a
-p
bandeira.fonte
C # 239 caracteres
versão mais explícita:
esta é uma solução bastante ingênua e provavelmente pode ser melhorada (talvez possamos permitir a conversão implícita em char?).
ele assume estar dentro de uma função, lê no console (stdin) e grava nele (stdout).
edit: Char.IsUpper (s [j]) é 2 bytes mais longo que s [j]> 64 && s [j] <91, Char.ToUpper também é maior que minha versão.
fonte
Haskell,
222207 BytesAtualizada:
Como funciona:
fonte