El objetivo es, después de haber tomado una cadena como entrada, duplicar cada letra latina y "alternar" su mayúscula (es decir, mayúsculas se convierte en minúsculas y viceversa).
Ejemplo de entradas y salidas:
Input Output
bad bBaAdD
Nice NniIcCeE
T e S t Tt eE Ss tT
s E t sS Ee tT
1!1!1st! 1!1!1sStT!
n00b nN00bB
(e.g.) (eE.gG.)
H3l|@! Hh3lL|@!
La entrada consta de símbolos ASCII imprimibles.
No debe duplicar letras no latinas, números, caracteres especiales.
Respuestas:
Jalea, 5 bytes
Pruébalo en línea!
Cómo funciona
fuente
Python,
5654 bytesPruébalo en Ideone .
fuente
*
tiene mayor precedencia que+
, por lo que solo afectac
a mayúsculas y minúsculas.JavaScript ES6,
70686664 bytesAhorró 2 bytes gracias a @Kevin Lau - no Kenny
Guardado 2 bytes gracias a @ Cᴏɴᴏʀ O'Bʀɪᴇɴ
Explicación
Esto utiliza un realmente hacky:
que sin golf es:
Básicamente
l < "a"
verifica si el punto de código de la letra es menor que el punto de código dea
(por lo tanto, es una letra mayúscula). Si es así, hará loto + Low + erCase
que se convirtiól['toLowerCase']()
y hará que el carácter sea minúscula.`
las comillas permiten el formateo de cadenas, así que esencialmente puedes pensar en:como:
"to" + (l<"a" ? "Low" : "Upp") + "erCase"
que genera la función para llamar (hacer que la cadena sea mayúscula o minúscula). Ponemos esto entre corchetes[ ... ]
que nos permite acceder a una propiedad dada su nombre como una cadena. Esto devuelve la función apropiada y luego simplemente la llamamos.fuente
/[A-Z]/gi
es una expresión regular más corta: 3to${l<"a"?"Lower":"Upper"}Case
ato${l<"a"?"Low":"Upp"}erCase
l[`to${l<"a"?"Low":"Upp"}erCase`]()
Creo que tenemos una nueva definición del mal.Ruby,
3733 (30 +-p
bandera) bytesswapcase
¡al rescate! Más o menos. -4 bytes de @Lynn.fuente
gsub(/[a-z]/i){$&+$&.swapcase}
más lap
bandera es de 31 bytes.p
indicador(space)-p
también es de 3 bytes.C,
6360 bytesUtiliza el hecho de que
'a' XOR 32 == 'A'
, etc.Tres bytes guardados gracias a FryAmTheEggman.
fuente
s++
en el últimoputchar
(&&putchar(32^*s++)
) para guardar un byte&&
con*
, ¿verdad?&&
funciona el comportamiento de cortocircuito.f(char*s){isalpha(putchar(*s))&&putchar(32^*s);*s&&f(1+s);}
recursivo?f(char*s){*s&&f(1+s,isalpha(putchar(*s))&&putchar(32^*s));}
recursivo?CJam, 11 bytes
Pruébalo aquí.
Explicación
fuente
Pyth , 7 bytes
Banco de pruebas .
fuente
Python 3.5,
6056 bytes:Un programa completo Intentaré jugar más al golf.
¡Pruébelo en línea! (Ideona)
fuente
Haskell, 73 bytes
fuente
Cheddar ,
118104bytesPrimera respuesta real de Cheddar !!! Esto es mucho menos climático de lo que pensé que sería ...; _;
Funciona con la versión 1.0.0-beta.9 , no competitiva.
Como se puede ver, no diseñé el cheddar para ser golf: /
Sin golf:
Uso:
Actualización: 14/07/16 He terminado ternaries haciendo que esto se reduzca a 84 bytes
Cheddar, 84 bytes
funciona a partir de la versión v1.0.0-beta.14
fuente
Retina,
282721 bytesEsas son pestañas, no espacios.
Pruébalo en línea
Gracias a todos por las sugerencias.
fuente
[A-Za-z]
->i`[A-Z]
_
. Sin embargo, voy a usar pestañas para poder probar todos los casos de prueba a la vez.C,
8780Pase una cadena como entrada
f()
y la salida se escribe en STDOUT. La cadena no se modifica.fuente
sed, 30 bytes
Código de 29 bytes + parámetro de 1 byte
-r
Uso:
fuente
J,
3129 bytesExplicación
fuente
Haskell,
121, 101, 85,82fuente
isLower
es más corto que la construcción conelem
, por 5 bytes más.>>=
esconcatMap
(oconcat.map
) con argumentos volteadas:f n = n >>= (\x->if isAlpha x then[x,r x]else[x])
. Puede ir sin puntos y omitir el nombre de la función y reemplazar la definición def
con(>>= \x->if isAlpha x then[x,r x]else[x])
.otherwise
que puede utilizar cualquier expresión que se evalúaTrue
, por ejemplo1<2
. Puede reemplazar elif .. then .. else
con una lista por comprensión:\x->[x]++[g x|isAlpha x]
. Ah, y hay un error: el segundotoUpper
eng
debe ser unatoLower
.[x]++
esx:
.Perl, 36 bytes (35 +
-n
bandera)(
-p
etiqueta necesaria)(-2 bytes gracias a @Dom Hasting)
Breve explicación:
ord
devuelve el valor numérico de un carácter.ord(any lower case) >= 97
yord(any upper case) <= 90)
.Corre con :
fuente
/i
o su expresión regular coincidirá con varios puntos de código entre letras.Ruby,
31 + 1 = 3230 + 1 = 31 bytesCon la
-p
bandera, correAprovecha el hecho de que
swapcase!
devolveránil
cualquier cosa que no sea una letra ASCII, que se traduce en una cadena vacía cuando se devuelve fuera delgsub
bloque. @Jordan guardó un byte al capturar al personaje anterior en una retrospectiva.fuente
//
y luego usar$`[-1]
es inteligente.gsub(/(?<=(.))/){$1.swapcase!}
. Sin embargo, el mismo concepto básico, así que siéntase libre de usarlo..swapcase!
. (Quiero decir, eliminar el!
.)R,
191187168 1681569899 bytes99 bytes debido a mejoras para Giuseppe y MickyT .
fuente
readline()
puede usarse, pero costará un bytescan
funcionará con la entrada dada entre comillas (como suele ser el caso de los argumentos de línea de comandos en otros idiomas)05AB1E , 7 bytes
Código:
Explicación:
Utiliza la codificación CP-1252 . Pruébalo en línea!
fuente
Pyke,
86 bytesPruébalo aquí!
fuente
V , 21 bytes
Pruébalo en línea!
Demasiados bytes ...
fuente
En realidad, 8 bytes
Pruébalo en línea!
Explicación:
fuente
MATL,
119 bytesPruébalo en línea
Explicación
fuente
Perl,
282221 bytes (20 +-p
bandera)fuente
$"
lugar de' '
, pero no lo he probado.Stax ,
76 bytes¡Gracias a @recursive por un byte guardado!
¡Ejecútelo y depúrelo en staxlang.xyz! (el enlace es a la versión desempaquetada)
Desempaquetado (7 bytes):
Explicación:
fuente
u
lugar de:g
. Obtendrá todos los elementos únicos en una matriz, que es exactamente lo que desea en este caso. Aparte de eso, esto se ve muy bien.123
. Es posible que deba cambiar el formato de todas las entradas (es decir, citarlas). El enlace también está roto. Necesitas reemplazarm=11
conm=2
. Hay un botón de generación de publicación PPCG en staxlang.xyz, por lo que es posible que desee usar ese.Python, 59 bytes
Editado para corregir caracteres no alfabéticos repetidos
fuente
Julia, 40 bytes
Pruébalo en línea!
fuente
not s is (list comprehension)
bien, Julia ...PHP 4.1, 57 bytes
Este código supone el acceso a través de un servidor web (Apache, por ejemplo), utilizando la configuración predeterminada.
Puede pasar la cadena mediante el envío de la clave
S
por cualquier medio (POST
,GET
,COOKIE
,SESSION
...).fuente
C #,
8271 bytesC # lambda donde están la entrada y la salida
string
. Pruébalo en línea .11 bytes gracias al truco @Lynn.
fuente
Lisp común (Lispworks), 262 bytes
sin golf:
Uso:
fuente