Su entrada será una oración, frase o palabra en inglés. Solo contendrá a-zA-Z' -,.!?
. Su tarea es tomar la entrada, eliminar espacios y luego redistribuir las mayúsculas de manera que las letras en los índices que se capitalizaron antes (y solo las letras en los índices que se capitalizaron antes) se capitalicen.
Por ejemplo, si la entrada es A Quick Brown Fox Jumped Over The Lazy Dog
, los índices (basados en 0) de las letras mayúsculas son 0, 2, 8, 14, 18, 25, 30, 34, 39
. A continuación, quite los espacios de la entrada: AQuickBrownFoxJumpedOverTheLazyDog
. A continuación, minúsculas todas las letras, pero mayúsculas en 0, 2, 8, 14, 18, 25, 30, 34, 39
:, AqUickbrOwnfoxJumpEdovertHelazYdog
que es su salida.
Entrada
Su entrada será una oración, frase o palabra en inglés. Solo puede contener letras minúsculas, letras mayúsculas, guiones, apóstrofes, comas, puntos, signos de interrogación, signos de exclamación y espacios.
Salida
La entrada con espacios eliminados, minúscula-d, con letras en el índice de mayúsculas en la entrada mayúscula-d.
NOTA: Su programa no puede bloquearse (el error finaliza tal ejecución) con un IndexOutOfRange o un error similar.
Casos de prueba
Hi! Test!
Hi!tEst!
A Quick Brown Fox Jumped Over The Lazy Dog
AqUickbrOwnfoxJumpEdovertHelazYdog
testing TESTing TeStING testing testing TESTING
testingtESTIngteStInGTEstingtestingtestiNG
TESTING... ... ... success! EUREKA???!!! maybe, don't, NOOOOO
TESTING.........success!eureKA???!!!maybe,don't,nooooo
Enter PASSWORD ---------
Enterpassword---------
A a B b C c D d E e F f G g H h I i J j K k L l M m N n O o P p Q q R r S s T t U u V v W w X x Z z
AabbCcddEeffGghhIijjKkllMmnnOoppQqrrSsttUuvvWwxxZz
TEST
teST
0, 2, 8, 14, 18, 23, 27, 32
' Ellos son0, 2, 8, 14, 18, 25, 30, 34, 39
Respuestas:
Jalea ,
1413 bytesPruébalo en línea!
Cómo funciona
fuente
C (gcc) ,
82797472696766 bytesPruébalo en línea!
fuente
Python 2 , 114 bytes
Pruébalo en línea!
Equivalentemente:
Python 2 , 114 bytes
Pruébalo en línea!
fuente
''.join([(X[i].lower,X[i].upper)[x[i].isupper()]()for i in range(len(X))])
para -5 bytes.Python 3 ,
787572 bytes¡Gracias a @xnor por jugar 6 bytes!
Pruébalo en línea!
fuente
s
lugar des[0]
?(c*2).title()
puede obtener ambos casos, aunque haya cambiado.c>' '!=f()
es equivalente a(c>' ') and (' '!=f())
.05AB1E ,
1514 bytes-1 byte gracias a Emigna
Pruébalo en línea!
fuente
Haskell ,
9895898881 bytesGracias a @name, @nimi, @Zgarb y @Laikoni por ayudar a reducir 14 bytes en total
Sin golf:
fuente
filter(>' ')
por un byte menoslast(toLower:[toUpper|isUpper p])c
zipWith
debe guardar una más bytes:f s=zipWith(\p->last$toLower:[toUpper|isUpper p])s$filter(>' ')s
.V , 24 bytes
Pruébalo en línea!
Este tipo de desafíos son exactamente para lo que V fue creado. :)
Explicación:
fuente
Python 2, 100 bytes
fuente
Alice , 32 bytes
Pruébalo en línea!
Explicación
Esta es una plantilla estándar para programas que funcionan completamente en modo ordinal. Sin envolver, el programa es el siguiente:
fuente
JavaScript (ES6),
949185 bytesIntentalo
fuente
'@'<s[i]&s[i]<'['?
?Retina ,
7771 bytesPruébalo en línea! El enlace incluye un conjunto de pruebas. Explicación: La primera etapa duplica la línea, mientras que la segunda pone en minúscula el duplicado y elimina sus espacios. Luego, la tercera etapa recorre cada letra mayúscula de derecha a izquierda e intenta colocar un espacio antes del carácter correspondiente en la segunda línea. La primera línea se elimina y los espacios se utilizan para poner en mayúscula los caracteres relevantes del resultado. Editar: Guardado 6 bytes gracias a @Kobi.
fuente
(.?)
y$4
las piezas necesarias? Parece que tener un grupo opcional al final no hace nada.Perl,
9594 + 1 = 95 bytes+1 byte de penalización por -n
Guardar un byte por reemplazar de
s/\s//g
as/ //g
Pruébalo en línea!
Explicación:
Haga una copia de la cadena de entrada.
Elimine todos los espacios y transforme la cadena a minúsculas.
Luego comience el ciclo sobre cada letra. Pruebe la letra en la misma posición en la cadena guardada para mayúsculas. Si es superior, haga que la letra actual quede cautivada. Letra impresa
Tenga en cuenta que perl necesita ejecutarse con el interruptor de línea de comando "-n"
fuente
+1
byte para la-n
bandera. Aparte de eso, ¡esto se ve bien! Bienvenido al sitio! :)MATL , 18 bytes
El mismo enfoque que la respuesta 05AB1E de Riley .
Pruébalo en línea!
fuente
Python 3 , 117 bytes
¡Pruébelo en línea!
Este es mi primer código de golf, por lo que es probable que sea malo, ¡menos la ayuda de los comentarios a continuación!
PD Sí, es tonto que definir e incrementar
i
guarde bytes por encima del rango (len (y)). Oh bien.fuente
return
.C # (.NET Core) ,
108101bytesPruébalo en línea!
char
clase tiene estáticaToUpper()
yToLower()
métodos.fuente
Carbón , 33 bytes
Pruébalo en línea!
Como todavía no sé cómo pasar una cadena con espacios en blanco como un único parámetro de entrada en el código de carbón, simplemente asigno en el encabezado la cadena de prueba a la variable de carbón que representa lo que sería la primera entrada (
θ
):Por lo tanto, el código tiene el mismo número de bytes que si la cadena se pasara como primera entrada.
Puede ver aquí la versión detallada del código.
fuente
PHP, 181 bytes
Intento obtener los números menores de bytes, este es mi código:
Pruébalo en línea!
fuente
PREG_OFFSET_CAPTURE
, puede usar el valor256
,$argn
es una variable más corta en cuantoreadline()
a una entrada y creoctype_upper
y uso,lcfirst
yucfirst
ahorrará muchos bytes con un bucle y uso de$$i
y operador ternarioJava 8,
184177161 bytesDefinitivamente se puede jugar un poco más.
- 16 bytes gracias a @ OlivierGrégoire tomando la entrada como en
char[]
lugar deString
.Explicación:
Pruébalo aquí
fuente
char[]
lugar de una cadena para esta, ¡ahorrará muchos bytes!String
, out =char[]
:-)Lisp común, 104 bytes
Pruébalo en línea!
Inusualmente corto para la palabra Common Lisp!
Código directo:
fuente
Java (OpenJDK 8) ,
15011711397 bytesPruébalo en línea!
Mientras jugaba más, llegué a 102 bytes:
Pruébalo en línea!
Pero recordé que esto estaba empezando a parecerse a la respuesta de Dennis 'C, así que simplemente porté su torpeza y ... ocurrió la magia. La gran ganancia del puerto es eliminar las ramas y las repeticiones dentro de ellas.
fuente
Hi! Test!
debería convertirseHi!tEst!
, pero con su solución se convierteHi!Test
.Hojas de cálculo de Google, 213 bytes
La entrada está en la celda
A1
y la fórmula se desglosa así:ArrayFormula()
nos permite evaluar cada término de formaROW()
independienteJOIN()
concatena todos esos resultados independientes en una sola cadenaIF(REGEXMATCH(),UPPER(),LOWER()
es lo que lo hace alternativo usando mayúsculas o minúsculas dependiendo de cuál era el caso en esa posición en la entradaROW(OFFSET())
Devuelve una matriz de valores1
aA1.length
que se puede introducir en laMID()
función para que podamos evaluar cada carácter a su vezResultados de casos de prueba: (Es más fácil de leer si hace clic en la versión más grande).
fuente
Rubí , 80 bytes.
Pruébalo en línea!
fuente
n.gsub(/./){}
en lugar den.size.times{};n
:n.gsub(/./){(?A..?Z)===a[i]?$&.upcase: $&}
.Perl, 92 bytes
Explicación:
fuente
-n
bandera para que su respuesta sea válida. Algunas cosas de golf:s/ //g
es suficiente (no es necesario\s
),y/a-z/A-Z/
es lo mismo quetr[a-z][A-Z]
, puedes usar-p
flag para no necesitar el últimoprint
, no necesitas el paréntesislc$&
.C, 103 bytes
Pruébalo en línea!
fuente
Python 3 ,
125, 124 bytesPruébalo en línea!
fuente
Python 2,
106105bytesEditar: guardar un byte a través de
print ''.join
=>print''.join
.Formulario lambda, 99 bytes
fuente
SCALA, 128 caracteres, 128 bytes
Gracias por este reto. Pruébalo en línea!
fuente
q / kdb +, 49 bytes
Solución:
Ejemplos:
Explicación:
Encuentre índices donde la entrada es mayúscula y luego aplique la función
upper
a esos índices en una versión en minúsculas, sin espacio, de la cadena de entrada. Tenga en cuenta que no podemos aplicar la función más allá de la longitud de la cadena, por lo tanto, use take (#
) para truncar la cadena de entrada a la longitud de la versión en minúsculas y sin espacio.Prima:
Después de leer las respuestas, pensé en probar una solución donde iteraba sobre la entrada, hasta ahora solo he logrado una solución de 53 bytes:
fuente
Swift 3.0, 199 bytes
Pruébalo en línea!
fuente
Perl 5 , 40 bytes
37 bytes de código +
-F
bandera. (tenga en cuenta que en versiones anteriores de Perl, es posible que deba agregar-an
marcas)Pruébalo en línea!
Explicaciones:
Gracias a
-F
,@F
contiene una lista de todos los caracteres de la entrada.for/\S/g
itera sobre cada carácter no espacial de la entrada. Usamos$i
para contar en qué iteración estamos. Si$F[$i++]
es un carácter en mayúscula (/[A-Z]/
), imprimimos el carácter actual en mayúscula (uc
), de lo contrario, lo imprimimos en minúscula (lc
). Tenga en cuenta esouc
ylc
devuelva su argumento sin cambios si no es una carta.Versión anterior (menos golfizada: 47 bytes):
Pruébalo en línea!
fuente