Algunos de sus empleados tienen llaves de mayúsculas rotas y usted es demasiado barato para reemplazarlas. ¡Ayúdelos creando el programa más corto posible para corregir su trabajo! Simplemente convierta cada carácter en una cadena dada de mayúsculas a minúsculas y viceversa ... ¡pero hay un giro!
¡También estás muy emocionado por la Navidad! Por lo tanto, va a dejar un pequeño "error" que no corrige las letras que están dentro de las secuencias de Christmas
(sin distinción entre mayúsculas y minúsculas).
Entrada
Para la entrada, usará una sola cadena (o matriz de bytes) que puede contener nuevas líneas y ascii entre 0x20 y 0x7e ( -
~
). No necesita preocuparse por retornos de carro o cualquier otro carácter que esté en la cadena.
Salida
El resultado debe contener solo la cadena proporcionada con los caracteres mayúsculas y minúsculas intercambiados (¡y el error de Navidad, por supuesto!). Puede contener hasta un espacio en blanco final adicional.
Insecto de navidad
Vamos a explicar esto con un ejemplo:
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
contiene "c", que es la primera carta de Navidad, por lo que no se cambia. La siguiente letra en Christmas
es "h", que está en hardly
(que también contiene la "r"), por lo que no se cambia, etc. en Christmas
sí solo tiene una letra sin cambios porque para cuando el código llega allí, en realidad está buscando "s", no "c".
Una vez que se encuentra la secuencia, debe comenzar de nuevo en "c" y comenzar a iterar Christmas
una vez más. Así ChristmasChristmas
quedaría sin cambios.
Casos de prueba
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
Ganador
Este es el código de golf, por lo que gana la respuesta más corta.
Christmas
secuencialmente, por lo que "h" es ignorado hasta que encuentra "c", entonces busca "h", a continuación, "r", etc.Respuestas:
05AB1E , 16 bytes
¡Gracias a Emigna por guardar un byte y corregir un error!
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
u
, debería funcionar.V ,
38, 36 bytesPruébalo en línea! (contiene entrada y salida esperada para comparación)
Cuando vi esto por primera vez, pensé que sería extremadamente fácil. De hecho, si no fuera por el insecto "navidad", esto sería sólo 2 bytes:
V~
. El error de Navidad lo hace significativamente más difícil, por una respuesta muy hacky.Como de costumbre, aquí hay un hexdump:
fuente
PHP,
113110102 bytestoma la entrada del primer argumento de la línea de comando. Corre con
-r
.Descompostura
fuente
MATL ,
3630 bytesLas cadenas con líneas nuevas deben definirse concatenando con el código ASCII
10
(consulte el ejemplo en el enlace con los casos de prueba).Pruébalo en línea! O verificar todos los casos de prueba .
Explicación
fuente
Pyke,
3125 bytesPruébalo aquí!
fuente
\n
y rodeas la entrada"
, síPerl 6 , 84 bytes
fuente
C # 197 bytes
No voy a ganar con esto, pero espero que la implementación de C # más pequeña que funcione ...
Explicación:
fuente
JavaScript,
12211811410710493 bytesfuente
k!=c?k:c.toUpperCase()
para ahorrarte unos pocos bytes?Perl 6 , 80 bytes
Intentalo
fuente
my $i=0;
sea legal. Y no me sorprendería si hubiera más errores de sintaxis relacionados con los espacios en blanco.$/ eq $/.lc
antes que$/.lc eq $/
para poder eliminar el espacio anteseq
.Java 7, 200 bytes
Feo, pero funciona ... Definitivamente, sin duda, se puede jugar más al golf ... Estoy oxidado ...
Sin golf:
Código de prueba:
Pruébalo aquí.
Salida:
fuente
Python 100 bytes
fuente
Ruby, 63 + 1 = 64 bytes
Usa la
-p
bandera.fuente
C # 239 caracteres
versión más explícita:
Esta es una solución bastante ingenua, y probablemente pueda mejorarse (¿tal vez podamos permitir la conversión implícita a char?).
se supone que está dentro de una función, lee desde la consola (stdin) y escribe en ella (stdout).
editar: Char.IsUpper (s [j]) es 2 bytes más largo que s [j]> 64 && s [j] <91, Char.ToUpper es más largo que mi versión también.
fuente
Haskell,
222207bytesactualizado:
Cómo funciona:
fuente