Inspirado por esto.
Dada una cadena como entrada que consta solo de caracteres del alfabeto en mayúsculas y minúsculas, wicka-wub it.
¿Cómo hago wicka-wub una cadena?
El texto de ejemplo utilizado es "DJMcMayhem".
Divide la cadena antes de cada letra mayúscula, para obtener ["D", "J", "Mc", "Mayhem"]
.
A continuación, tome las dos mitades de la lista como sublistas. Esto nos da [["D", "J"],["Mc", "Mayhem"]]
. Si la lista tiene una longitud impar (es decir, 3), la primera sublista contendrá la subcadena central (es decir [[a,b], [c]]
).
Crea una lista de wicka
sy wub
s. El número de wicka
s debe ser tan largo como la longitud de la primera parte de la lista de entrada (es decir ["D", "J"] -> ["wicka", "wicka"]
), y el número de s wubs
debe ser tan largo como la longitud de la segunda parte de la lista de entrada. En nuestro caso, esto da ["wicka", "wicka", "wub", "wub"]
.
Ahora une las sublistas de la lista de entrada en cadenas individuales y aplana.
Actualmente tenemos ["DJ", "McMayhem"]
y ["wicka", "wicka", "wub", "wub"]
.
Unirse a la wicka
/ wub
lista con -
s: wicka-wicka-wub-wub
. Anteponer a -
. Si hay más de una letra mayúscula en la entrada, agregue otra -
.
Ahora tenemos ["DJ", "McMayhem"]
y "-wicka-wicka-wub-wub-"
.
Agregue la wicka-wub
cadena al final del primer elemento en la lista de entrada, para obtener ["DJ-wicka-wicka-wub-wub-","McMayhem"]
.
Por último, repita los caracteres en la segunda parte de la cadena por su valor indexado 0 en la cadena de entrada original. En nuestro ejemplo, eso significa que el primero M
se repetiría dos veces, luego las c
tres veces y las siguientes M
cuatro veces. Únase a la lista, de modo que la segunda parte (la parte en la que acaba de repetir letras) se agrega a la primera parte ( "DJ-wicka-wicka-wub-wub-"
).
Resultado final de la entrada:
"DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm"
Proceso total:
["D", "J", "Mc", "Mayhem"] =>
[["D", "J"], ["Mc", "Mayhem"]] =>
["DJ", "McMayhem"] and ["wicka", "wicka", "wub", "wub"] =>
["DJ", "McMayhem"] and "-wicka-wicka-wub-wub-" =>
["DJ-wicka-wicka-wub-wub-", "McMayhem"] =>
"DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm"
Tu tarea
Su tarea es, dada una cadena que consta de solo caracteres alfabéticos en mayúscula y minúscula, generar la versión wicka-wubbed de esa cadena.
Algunas reglas
- La entrada puede consistir completamente en letras minúsculas, o letras mayúsculas, o cualquier número de cada una, pero no otros caracteres.
- Si la entrada consta de letras minúsculas enteras, la salida correcta debería ser simplemente la etapa final (la cadena con los caracteres repetidos según su posición indexada en 0). No debería haber
wicka
owub
en ese caso. - Aplican reglas estándar, programas completos o funciones, depende de usted.
- Este es un código de golf, por lo que gana el código más corto.
GoodLuck-wicka-wicka-wub-GGGGGGGGooooooooollllllllllfffffffffffeeeeeeeeeeerrrrrrrrrrrrrssssssssssssss
Casos de prueba
input => output
DJMcMayhem => DJ-wicka-wicka-wub-wub-MMcccMMMMaaaaayyyyyyhhhhhhheeeeeeeemmmmmmmmm
PPCG => PP-wicka-wicka-wub-wub-CCGGG
foobarbaz => fooooobbbbaaaaarrrrrrbbbbbbbaaaaaaaazzzzzzzzz
FooBarBaz => FooBar-wicka-wicka-wub-BBBBBBaaaaaaazzzzzzzz
HelloWorld => Hello-wicka-wub-WWWWWoooooorrrrrrrllllllllddddddddd
Test => Test-wicka
UPPER => UPP-wicka-wicka-wicka-wub-wub-EEERRRR
fooBarBaz => fooBar-wicka-wicka-wub-BBBBBBaaaaaaazzzzzzzz
5
letras mayúsculas?foobarbaz
simplemente regresarfoobarbaz
? ¿Hay alguna segunda parte?Respuestas:
Java 8 (782 bytes)
Sin golf:
fuente
Perl 5 , 142 bytes
Código de 130 bytes + 12 para
-F(?=[A-Z])
.Esto ahora coincide correctamente con todos los casos de prueba proporcionados.
Pruébalo en línea!
Nota : TIO incluye
-l
ejecutar todas las pruebas a la vez.fuente
Kotlin 1.1 -
494492 bytesSumisión
Prueba
Corriendo
Funciona en KotlinLang, pero no en TryItOnline ya que 1.1 no es compatible
Corrí a través de mi compresor, guardé 2 bytes
fuente
Python 3 ,
234281270248246 bytesPruébalo en línea!
Se agregaron 47 bytes, gracias al Sr. Xcoder;)
Guardado 11 bytes gracias a Jonathan Frech
Guardado 22 bytes gracias a Halvard Hummel
Ahorré 2 bytes más gracias al Sr. Xcoder
fuente
foobar
.